fprintf()、fscanf()与printf()、scanf()的区别
1.定义
fscanf()是格式化读取文件函数,fprintf()是格式化写入函数,而scanf()和printf()我们都知道,简单来说就是一个程序中必不可少输入输出,但其实他们只是是fscanf()和fprintf()的特殊形式。严格来说scanf()不叫输入函数,它其实是读取函数;printf()也不叫输出文件函数,它是写入文件函数。
2.什么是格式化?
我们知道printf输出和scanf输入的时候分别有输出控制符和输入控制符,表示将什么格式的数据输出或输入,所以说它们是格式化的。
3.为什么说scanf()读取文件函数,printf()是写入文件函数?
scanf()的作用其实是读取我们在键盘上敲入的数据,printf()的作用是将数据写入到显示器,而我们在刚开始学习C语言时怕混淆,所以才说的scanf()是输入函数,printf()是输出函数。
4.原型
#include <stdio.h>
int scanf("输入控制符,例:%d",输入参数);
int printf("输出控制符,例:%d",输出参数);
int fscanf(FILE *stream,"输入控制符,例:%d",输入参数);
int fprintf(FILE *stream,"输出控制符,例:%d",输出参数);
注:其中FILE是系统定义的结构体,stream指针指向要操作的文件
5.区别
由上可以看出,他们之间的区别在于,scanf()和printf()只能对标准输入输出文件流进行读写,不需要指明要操作的文件,默认就是输入输出文件流。而fscanf()和fprintf()因为多了一个参数用于指定读写哪个流,所以可以操作任何文件流的读写。
总结:
读和写的操作是由内存发出的,
内存输出到屏幕上,就是内存写操作,将数据写到屏幕上,为printf
内存从键盘接收数据,就是内存读操作,从键盘上读入数据,为scanf
内存输出到文件中,就是内存写操作,将数据写到文件中,为fprintf
内存从文件中接收数据,就是内存读操作,从文件中读入数据,为fscanf
scanf - 从键盘上读取格式化的数据 stdin
printf - 把数据写到(输出)到屏幕上 stdout
fscanf - 针对所有输入流的格式化的输入函数 读 stdin 打开的文件
fprintf - 针对所有输出流的格式化的输出函数 写 stdout 打开的文件
sscanf - 从一个字符串中,还原出一个格式化的数据
sprintf - 把格式化的数据,存放在(转换成)一个字符串