参考:http://blog.sina.com.cn/s/blog_674b5aae0100prv3.html
总览 (SYNOPSIS)
#include <stdio.h>
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);
#include <stdarg.h>------------现在好像都在stdio.h中进行声明。
int vprintf(const char *format, va_list ap);
int vfprintf(FILE *stream, const char *format, va_list ap);
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
描述 (DESCRIPTION)
print系列函数根据format 参数生成输出内容。
printf和vprintf函数把输出内容写到stdout,即标准输出流;
fprintf和vfprintf函数把输出内容写到给定的stream流;
sprintf、snprintf、 vsprintf和vsnprintf函数把输出内容存放到字符串str中.。
这些函数由格式字符串format参数控制输出内容,它指出怎么样把后面的参数(或通过stdarg(3)的变长参数机制访问的 参数)转换成输出内容。
这些函数返回打印的字符数量(不包括字符串结尾用的‘ ‘)。snprintf和vsnprintf的输出不会超过size 字节(包括了结尾的` '), 如果因为这个限制导致输出内容被截断, 则函数返回-1。(这句话解释有误,可以参考man手册,原文关于返回值表述如下:)
Return value
Upon successful return, these functions return the number of characters
printed (not including the trailing ’ ’ used to end output to
strings). The functions snprintf() and vsnprintf() do not write more
than size bytes (including the trailing ’ ’). If the output was trun-
cated due to this limit then the return value is the number of charac-
ters (not including the trailing ’ ’) which would have been written to
the final string if enough space had been available. Thus, a return
value of size or more means that the output was truncated. (See also
below under NOTES.) If an output error is encountered, a negative
value is returned.
从手册中可以看出,意思是如果输出由于受到size的限制而被截断输出,返回值则是被截断后并写入str中的字符数(不包括‘ ’),并且前提是str有足够的可用空间。
而如果输出遇到错误,会返回一个负值。这句话是针对上面8个函数而言的。