如同printf与scanf的关系一样,fprintf和fscanf也是如此,fprintf负责向文件里写数据,fscanf函数则可以从文件里读数据,它的函数原型如下:
int fscanf(FILE *stream, char *format[,argument...]);
作为格式化写数据函数,它的参数同样比scanf也多一个参数,即第一个参数文件指针,表示读取的文件目标,其余参数和scanf一样,按照相应的格式进行读取,返回值表示读取数据的字节数。比如:
char str[100]; fscanf(fp,"%s",str);
则表示从fp所指向的文件中进行读数据,与空格或换行结束,将结果保存到str数组中。
更多fscanf的格式如下表:
格式 | 作用 |
%d | 读入一个十进制整数 |
%i | 读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25 |
%u | 读入一个无符号十进制整数 |
%f %F %g %G | 用来输入实数,可以用小数形式或指数形式输入 |
%x %x | 读入十六进制整数 |
%o | 读入八进制整数 |
%s | 直到遇到一个空格字符(空格字符可以是空白、换行和制表符) |
%c | 单个字符:读取下一个字符。如果指定了一个不为 1 的宽度 width,函数会读取 width 个字符,并通过参数传递,把它们存储在数组中连续位置。在末尾不会追加空字符 |
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程