Home C&C++函数库 c++ 语法 程序源码 Linux C库

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

🍄  另请参阅



sscanf 从字符串读取格式化的数据(function )
printf 将格式化的数据写入stdout(function )
sprintf 将格式化的数据写入字符串(function )
strcat 连接字符串(function )

联系我们 免责声明 关于CandCplus 网站地图