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;
}        

 

posted @ 2022-12-14 16:15  禅元天道  阅读(3045)  评论(0编辑  收藏  举报