C语言中的vsnprintf函数
函数原型:
int vsnprintf(char* sbuf, size_t n, const char* format, va_list arg)
函数说明:该函数用于向一个字符串缓存区格式化打印字符串,且可以限定打印字符串的最大长度。该函数需要C99以上版本支持。
函数参数:
sbuf
:指向存储生成的C字符串的缓存区的指针,缓存区的大小应至少为n
个字符;n
:缓存区中可以存储的最大字节数,生成的字符串长度最多为n-1
(为额外的终止符预留空间);format
:C 字符串,其中包含一个格式字符串,该字符串遵循与printf
中的格式相同的规范;arg
:标识使用va_start
初始化的变量参数列表的值。
函数返回值:
如果足够大,则返回写入的字符数,不包括终止空字符。如果发生编码错误,则返回负数。请注意,仅当此返回值为非负值且小于n
时,字符串才完全写入。
示例代码:
#include <stdio.h> #include <stdarg.h> void PrintFError ( const char * format, ... ) { char buffer[256]; va_list args; va_start (args, format); vsnprintf (buffer,256,format, args); perror (buffer); va_end (args); } int main () { FILE * pFile; char szFileName[]="myfile.txt"; pFile = fopen (szFileName,"r"); if (pFile == NULL) PrintFError ("Error opening '%s'",szFileName); else { fclose (pFile); } return 0; }