int printf( const char *format, ... ); | (until C99) | |
int printf( const char *restrict format, ... ); | (since C99) | |
(2) | ||
int fprintf( FILE *stream, const char *format, ... );
| (until C99) | |
int fprintf( FILE *restrict stream, const char *restrict format, ... );
| (since C99)//输出到文件 | |
(3) | ||
int sprintf( char *buffer, const char *format, ... );
| (until C99) | |
int sprintf( char *restrict buffer, const char *restrict format, ... );
| (since C99)//输出到字符串buffer中 | |
int snprintf( char *restrict buffer, int bufsz, const char *restrict format, ... ); | (4) | (since C99)//按size大小输出到字符串str中 |
int printf_s(const char *restrict format, ...);
| (5) | (since C11) |
int fprintf_s(FILE *restrict stream, const char *restrict format, ...);
| (6) | (since C11) |
int sprintf_s(char *restrict buffer, rsize_t bufsz, const char *restrict format, ...); | (7) | (since C11) |
int snprintf_s(char *restrict buffer, rsize_t bufsz, const char *restrict format, ...); | (8) | (since C11) |
参数:
stream | - | 输出到要写至的文件流 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
buffer | - | 指向要写至的目标字符串 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bufsz | - | 要写的缓冲区大小 - 至少有1个字符可能被写,还有一个空结尾 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
format | - | 指向一个以空结尾的字符串来说明以什么样的格式来翻译这个数据,这种格式的字符串由普通的多个字符和转换说明符来组成(除了%),字符会无改变的复制到输出流,每个转换说明符有以下格式:
|
返回值:
1,2)
返回转化输出流的字符的个数,如果一个输出错误或者编码错误发生,则返回一个负值
3)
返回成功写进文件缓冲区的字符的个数(不包括结尾空字符),如果一个输出错误或者编码错误发生,则返回一个负值
4)
如果指定缓冲徐大小 bufsz 被忽略的话,返回写进缓冲的大小
(不包括结尾空字符)
,否则,
如果一个输出错误或者编码错误发生,则返回一个负值
5,6)
返回转化输出流的字符的个数,如果一个输出错误或者编码错误或者一个运行约束冲突错误
7)
返回成功写入缓冲区的字符的个数,不计算空结尾,只要buffer 不是一个空指针并且bufsz也不是0,并且不大于
RSIZE_MAX
返回0 如果发生运行约束冲突错误
返回负值 如果发生编码错误
8)
返回成功写入缓冲区的字符的个数,不计算空结尾,只要buffer 不是一个空指针并且bufsz也不是0,并且不大于
RSIZE_MAX
返回负值 如果发生运行约束冲突错误 或者编码错误
区别:
printf只会检查格式字符串是否为空,而printf_s还会检查用户自定义的格式字符串是否合法