snprintf
函数 <cstdio>
int snprintf ( char * s, size_t n, const char * format, ... );
将格式化输出写入特定大小的缓冲区
使用与
printf使用format 时打印的相同的文本组成一个字符串,但不打印内容,
而是将内容作为C字符串存储在由s指向的缓冲区中(以n作为要填充的最大缓冲区容量)。
如果得到的字符串长度超过n-1个字符,则丢弃其余字符,不存储,但计算函数返回的值。
在写入的内容之后会自动附加一个终止空字符。
在format形参之后,函数期望至少与format所需的参数一样多的附加参数。
☲ 参数
s
指向存储C-string结果的缓冲区的指针。
缓冲区的大小至少应为n个字符。
n
缓冲区中使用的最大字节数。
生成的字符串长度最多为n-1,为额外的终止空字符留出空间。
size_t是一个无符号整型。
format
C字符串,包含一个格式字符串,该格式字符串遵循与printf格式相同的规范(请参阅
printf了解详细信息)。
... (additional arguments)
根据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;
|
输出:
The half of 60 is 30, and the half of that is 15.
|
有关格式化的更多示例,请参见
printf。
🍄 另请参阅