📜  C++ vsnprintf()

📅  最后修改于: 2020-09-25 08:42:18             🧑  作者: Mango

C++中的vsnprintf() 函数用于将格式化的字符串写入字符串缓冲区。

与vsprintf()不同,在vsnprintf()指定可以写入缓冲区的最大字符数。

vsnprintf()原型

int vsnprintf( char* buffer, size_t buf_size, const char* format, va_list vlist );

vsnprintf() 函数将通过指向的字符串 format为<字符>缓冲区。可以写入的最大字符数为buf_size 。 字符被写入后,终止空字符添加。如果buf_size等于零, buf_size写入任何内容,并且buffer可能是空指针。

字符串格式可以包含以%开头的格式说明符,这些格式说明符由作为列表vlist传递的变量的值替换。

它在头文件中定义。

vsnprintf()参数

vsnprintf()返回值

示例:vsnprintf() 函数的工作方式

#include 
#include 

void write(char* buf, int buf_size, const char *fmt, ...)
{
    va_list args;
    va_start(args, fmt);
    vsnprintf(buf, buf_size, fmt, args);
    va_end(args);
}

int main ()
{
    char buffer[100];
    char fname[20] = "Bjarne";
    char lname[20] = "Stroustrup";
    char lang[5] = "C++";

    write(buffer, 27, "%s was created by %s %s\n", lang, fname, lname);

    printf("%s", buffer);

    return 0;
}

运行该程序时,输出为:

C++ was created by Bjarne