📅  最后修改于: 2020-09-25 08:35:37             🧑  作者: Mango
与sprintf()不同, snprintf()
指定了可写入缓冲区的最大字符数。
int snprintf( char* buffer, size_t buf_size, const char* format, ... );
snprintf()
函数将format指向的字符串写入buffer
。可以写入的最大字符数为(buf_size-1)
。
字符被写入后,终止空字符添加。如果buf_size
等于零, buf_size
写入任何内容,并且缓冲区可能是空指针。
它在
如果成功, snprintf()
将排除终止空字符足够大的缓冲已被写入字符 函数返回数。失败时,它将返回负值。
当且仅当返回值是非负且小于buf_size
时,才认为输出已完全写入。
#include
#include
using namespace std;
int main()
{
char buffer[100];
int retVal, buf_size = 100;
char name[] = "Max";
int age = 23;
retVal = snprintf(buffer, buf_size, "Hi, I am %s and I am %d years old", name, age);
if (retVal > 0 && retVal < buf_size)
{
cout << buffer << endl;
cout << "Number of characters written = " << retVal << endl;
}
else
cout << "Error writing to buffer" << endl;
return 0;
}
运行该程序时,输出为:
Hi, I am Max and I am 23 years old
Number of characters written = 34