C++官网参考链接:https://cplusplus.com/reference/cstdio/snprintf/
函数
<cstdio>
snprintf
int snprintf ( char * s, size_t n, const char * format, ... );
将格式化的输出写入一定大小的缓冲区
如果在printf上使用format,则将打印相同的文本组成的一个字符串,但内容不被打印,而是作为C字符串存储在由s指向的缓冲区中(以n为要填充的最大缓冲区容量)。
如果结果字符串大于n-1个字符,则丢弃剩余的字符并不存储,而是将其计算在函数返回的值中。
在写入的内容之后自动追加一个终止空字符。
在format形参之后,函数期望至少有format所需的相同数量的附加实参。
形参
s
指向存储结果C字符串的缓冲区的指针。
缓冲区的大小至少应该是n个字符。
n
缓冲区中使用的最大字节数。
生成的字符串的长度最多为n-1,为附加的终止空字符留出空间。
size_t是无符号整型。
format
C字符串,包含一个格式字符串,该格式字符串遵循与printf中的format相同的规范(详细信息请参阅printf)。
...(附加实参)
根据format字符串的不同,函数可能需要一系列附加实参,每个实参包含一个值,用于替换format字符串中的格式说明符(对于n是指向存储位置的指针)。
这些实参的数量至少应该与格式说明符中指定的值的数量相同。函数将忽略额外的实参。
返回值
如果n足够大,则为写入的字符数,不包括终止空字符。
如果发生编码错误,则返回负数。
注意,只有当返回值非负且小于n时,字符串才被完全写入。
用例
/* snprintf example */
#include <stdio.h>
int main ()
{
char buffer [100];
int cx;
cx = snprintf ( buffer, 100, "The half of %d is %d", 60, 60/2 );
if (cx>=0 && cx<100) // check returned value
snprintf ( buffer+cx, 100-cx, ", and the half of that is %d.", 60/2/2 );
puts (buffer);
return 0;
}
输出:
有关格式化的更多示例,请参阅printf。