printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 输出格式转换函数

参考: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)的变长参数机制访问的 参数)转换成输出内容。

这些函数返回打印的字符数量(不包括字符串结尾用的‘\0‘)。snprintf和vsnprintf的输出不会超过size 字节(包括了结尾的`\0'), 如果因为这个限制导致输出内容被截断, 则函数返回-1。(这句话解释有误,可以参考man手册,原文关于返回值表述如下:)

Return value
       Upon successful return, these functions return the number of characters
       printed  (not  including  the  trailing  ’\0’  used  to  end  output to
       strings).  The functions snprintf() and vsnprintf() do not  write  more
       than size bytes (including the trailing ’\0’). If the output was trun-
       cated due to this limit then the return value is the number of  charac-
       ters (not including the trailing ’\0’) 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中的字符数(不包括‘\0’),并且前提是str有足够的可用空间。

而如果输出遇到错误,会返回一个负值。这句话是针对上面8个函数而言的。

posted @ 2013-12-25 16:05  ITtecman  阅读(2482)  评论(0编辑  收藏  举报