printf,sprintf,fprintf的区别与联系
在写代码过程中总会遇到printf和sprintf,既然这两个都遇到了,那么不妨再加一个fprintf吧.
他们三个都是将格式化字符串输出,区别就是他们输出的目标不一样.
(1)、printf,是把格式化字符串输出到标准输出(一般是屏幕).
printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。
printf()声名于头文件stdio.h。
函数原型 int printf ( const char * format, ... );
返回值: 正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志。
调用格式:
printf()函数的调用格式为:printf("格式化字符串",输出表列)。
格式化字符串包含三种对象,分别为:
1)字符串常量;
2)格式控制字符串;
3)转义字符。
字符串常量原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式控制字符串和各输出项在数量和类型上应该一一对应。其中格式控制字符串是以%开头的字符串,在%后面跟有各种格式控制符,以说明输出数据的类型、宽度、精度等。
(2)、sprintf,是把格式化字符串输出到指定字符串,所以参数比printf多了个char * ,那就是目标字符串的地址.
srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上。如果想要把sprintf中的内容输出,则可以再在后面加一句printf()即可(如文末栗子中所示)~
头文件:stdio.h
函数功能:格式化字符串,将格式化的数据写入字符串中。
函数原型:int sprintf(char *buffer, const char *format, [argument]...)
参数:
1)buffer:是char类型的指针,指向写入的字符串指针;
2)format:格式化字符串,即在程序中想要的格式;
3)argument:可选参数,可以为任意类型的数据;
函数返回值:buffer指向的字符串的长度;
(3)、fprintf,是把格式化字符串输出到指定文件中,所以参数比printf多了个文件指针File * ,那是目标文件的文件描述符(文件流指针)
下面举个小栗子来演示下:
总结:
都是把格式好的字符串输出,只是输出的目标不一样:
1 )printf,是把格式字符串输出到标准输出(一般是屏幕,可以重定向);
2 )sprintf,是把格式字符串输出到指定字符串中,所以参数比printf多一个char*。那就是目标字符串地址;
3 )fprintf, 是把格式字符串输出到指定文件设备中,所以参数笔printf多一个文件指针FILE*。
参考:
2.sprintf、fprintf和printf这三个函数有什么区别?