1.4种格式化输出区别
printf,fprintf,sprintf都是格式化输出命令,它们的用法与区别可以通过Linux中命令“man printf”来查看。
int printf(const char *format,***)将格式输出到stdout
int fprintf(FILE *steam,const char *format,***)格式化输出到文件流中,即写入文件
int sprintf(char *str,const char *format,***)格式化输出到字符串str中,注意此时需要预先给str分配足够大的空间。sprintf最常用的场景是将整数转换为字符串,可替代atoi函数。
int snprintf(char *str,size_t n,const char *format,*** )格式化输出到字符串str中,但是只写入长度为n的输出。
2.格式化输出时的注意事项
sprintf()在转换整数时,需考虑输出数的格式,如
sprintf(str,"%4x",-1);
str的值是多少呢?时间测试会发现,str为FFFFFFFF而不是4位宽的FFFF。因为函数参数在入栈计算机并不知道-1是32位的还是16位的,就会按照 32位来存储,并且高位是符号位扩展,当格式化输出时,4位宽不够,就会自动补到32位