snprintf ()- 将格式化数据打印到缓冲区

格式

#include <stdio.h>
int snprintf(char *buffer, size_t n, const char *format-string,
             argument-list);

语言级别

ANSI

线程安全

语言环境敏感

此函数的行为可能受当前语言环境的 LC_CTYPE 和 LC_NUMERIC 类别影响。 如果在编译命令中指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,那么此行为也可能受当前语言环境的 LC_UNI_CTYPE 类别影响。 有关更多信息,请参阅 了解 CCSID 和语言环境

描述

snprintf() 函数将一系列字符和值格式化并存储在数组 buffer中。 任何 argument-list 都将根据 format-string中相应的格式规范进行转换和输出。 snprintf() 函数与 sprintf() 函数相同,但添加了 n 自变量,这指示要写入 buffer的最大字符数 (包括结束空字符)。

format-string 由普通字符组成,其格式和功能与 printf() 函数的格式字符串相同。

返回值

snprintf() 函数返回数组中写入的字节数,不计入结束空字符。

示例

此示例使用 snprintf() 来格式化和打印各种数据。

#include <stdio.h>

char buffer[200];
int i, j;
double fp;
char *s = "baltimore";
char c;

int main(void)
{
   c = 'l';
   i = 35;
   fp = 1.7320508;

   /* Format and print various data */
   j = snprintf(buffer, 6, "%s\n", s);
   j += snprintf(buffer+j, 6, "%c\n", c);
   j += snprintf(buffer+j, 6, "%d\n", i);
   j += snprintf(buffer+j, 6, "%f\n", fp);
   printf("string:\n%s\ncharacter count = %d\n", buffer, j);
}

/*********************  Output should be similar to:  *************

string:
baltil
35
1.732
character count = 15           */

相关信息