📅  最后修改于: 2020-09-25 08:42:18             🧑  作者: Mango
与vsprintf()不同,在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
传递的变量的值替换。
它在
#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