printf、fprintf、dprintf、sprintf、snprintf均是格式化输出
原型
#include <stdio.h>int printf(const char *format, ...);int fprintf(FILE *stream, const char *format, ...);int dprintf(int fd, const char *format, ...);
//Return: 输出字符的数量 if OK, 负数 if output errorint sprintf(char *str, const char *format, ...);
//Return: 存在数组的字符数量 if OK, 负数 if encoding errorint snprintf(char *str, size_t size, const char *format, ...);
//Return: 存在数组的字符数量 if 缓冲区足够大, 负数 if encoding error
#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>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);
printf:写入标准输出,常用
fprintf:写入指定的流,比如写到某个 .txt 文件中
dprintf:写入指定的文件描述符
sprintf:存入指定的数组buf内,会自动在结尾追加null字节。此外,因为sprintf可能会溢出,所以调用者要确保buf的尺寸
snprintf:相对于sprintf明确指定了尺寸,防止溢出问题