printf, fprintf, sprintf, vsprintf, snprintf, vsnprintf之间的用法和区别
1、printf是打印格式化字符串,返回值是成功打印的字符数;
int printf(const char *format, ...);
2、fprintf是将格式化数据写入到指定文件流中;
int fprintf(FILE *stream, const char *format, ...);
3、sprintf是将格式化的数据写入到指定字符串;
int sprintf(char *str, const char *format, ...);
4、vsprintf与sprintf类似,不同之处在于它使用可变参数列表(va_list)来传递参数,而不是通过参数列表中的省略号...来传递。
int vsprintf (char * str, const char * format, va_list arg);
5、snprintf与sprintf类似,但在此基础上加入了写入最大字符数目n的限制,可以防止缓冲区溢出的安全漏洞,更加安全。
int snprintf(char *str, size_t size, const char *format, ...);
6、vsnprint也是与vsprintf类似,在其基础上加入了下入最大字符数目n的限制,更加安全。函数的返回值是实际尝试写入的字符数(不包括结尾的空字符),如果未能完全写入,则返回值等于n。
int vsnprintf (char * s, size_t n, const char * format, va_list args);