当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 snprintf用法及代码示例


C语言stdio头文件(stdio.h)中snprintf函数的用法及代码示例。

用法:

int snprintf ( char * s, size_t n, const char * format, ... );
将格式化的输出写入大小合适的缓冲区
组成一个具有相同文本的字符串,如果格式用于printf,而不是将其打印,而是将内容存储为C字串在所指向的缓冲区中s(服用n作为要填充的最大缓冲区容量)。

如果结果字符串长于n-1字符,其余的字符将被丢弃而不存储,而是计算该函数返回的值。

写入内容后会自动添加一个终止的空字符。

之后格式参数,该函数至少需要与所需数量一样多的附加参数格式

参数

s
指向存储结果C-string的缓冲区的指针。
缓冲区的大小至少应为n字符。
n
缓冲区中要使用的最大字节数。
生成的字符串的长度最大为n-1,为其他终止空字符留出空间。
size_t是无符号整数类型。
format
包含格式字符串的C字符串,其格式与格式printf(参考printf有关详细信息)。
... (additional arguments)
取决于格式字符串,函数可能需要一系列附加参数,每个参数都包含一个用于替换a的值格式说明符在里面格式字符串(或指向存储位置的指针,用于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

相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C snprintf function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。