fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件。

这两个函数的原型为:

int fscanf ( FILE *fp, char * format, ... );
int fprintf ( FILE *fp, char * format, ... );

fp 为文件指针,format 为格式控制字符串,... 表示参数列表。与 scanf() 和 printf() 相比,它们仅仅多了一个 fp 参数。例如:

fprintf() 返回成功写入的字符的个数,失败则返回负数。fscanf() 返回参数列表中被成功赋值的参数个数。

【示例】用 fscanf 和 fprintf 函数来完成对学生信息的读写。

#include<stdio.h>
#define N 2
struct stu{char name[10];int  num;int  age;float score;
} boya[N], boyb[N], *pa, *pb;
int main(){FILE *fp;int i;pa=boya;pb=boyb;if( (fp=fopen("D:\\demo.txt","wt+")) == NULL ){puts("Fail to open file!");exit(0);}//从键盘读入数据,保存到boyaprintf("Input data:\n");for(i=0; i<N; i++,pa++){scanf("%s %d %d %f", pa->name, &pa->num, &pa->age, &pa->score);   }pa = boya;//将boya中的数据写入到文件for(i=0; i<N; i++,pa++){fprintf(fp,"%s %d %d %f\n", pa->name, pa->num, pa->age, pa->score);   }//重置文件指针rewind(fp);//从文件中读取数据,保存到boybfor(i=0; i<N; i++,pb++){fscanf(fp, "%s %d %d %f\n", pb->name, &pb->num, &pb->age, &pb->score);}pb=boyb;//将boyb中的数据输出到显示器for(i=0; i<N; i++,pb++){printf("%s  %d  %d  %f\n", pb->name, pb->num, pb->age, pb->score);}fclose(fp);return 0;
}

运行结果:

Input data:
Tom 2 15 90.5↙
Hua 1 14 99↙
Tom  2  15  90.500000
Hua  1  14  99.000000

打开 D:\\demo.txt,发现文件的内容是可以阅读的,格式非常清晰。用 fprintf() 和 fscanf() 函数读写配置文件、日志文件会非常方便,不但程序能够识别,用户也可以看懂,可以手动修改。

如果将 fp 设置为 stdin,那么 fscanf() 函数将会从键盘读取数据,与 scanf 的作用相同;设置为 stdout,那么 fprintf() 函数将会向显示器输出内容,与 printf 的作用相同。例如:

运行结果:
Input two numbers: 10 20↙
sum=30

第十一章 文件操作_C语言fscanf和fprintf函数的用法详解(格式化读写文件)相关推荐

  1. C语言fscanf和fprintf函数的用法详解

    fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是 ...

  2. c语言fseek128字节,C语言rewind和fseek函数的用法详解(随机读写文件)

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  3. C语言rewind函数返回值为空,C语言rewind和fseek函数的用法详解(随机读写文件)...

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  4. python rewind_C语言rewind和fseek函数的用法详解(随机读写文件)

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  5. php函数find的用法,c语言find函数的用法详解

    c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...

  6. c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习

    C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...

  7. linux rm命令参数及用法详解---linux删除文件或目录命令

    http://www.linuxso.com/command/rm.html linux下rm命令使用详解---linux删除文件或目录命令 用户可以用rm命令删除不需要的文件.该命令的功能为删除一个 ...

  8. C语言高频率--typedef和const用法详解

    一.typedef用法详解 C语言允许为一个数据类型起一个新的别名,就像给人起"绰号"一样. 起别名的目的不是为了提高程序运行效率,而是为了编码方便.例如有一个结构体的名字是 st ...

  9. 第十一章 文件操作_C语言插入、删除、更改文件内容

    我们平时所见的文件,例如 txt.doc.mp4 等,文件内容是按照从头到尾的顺序依次存储在磁盘上的,就像排起一条长长的队伍,称为顺序文件. 除了顺序文件,还有索引文件.散列文件等,一般用于特殊领域, ...

最新文章

  1. 生物信息3天速成班—成为团队中不可或缺的人
  2. python requests模块使用
  3. Git credential helper 让你的 https不再需要输入用户名密码
  4. 神经网络训练集两张图片之间的相互作用
  5. 我们为什么要学数学?这里给你一个答案。
  6. mipi和isp处理_图像信号处理 (ISP) 流水线
  7. C# 获取视频文件播放时长
  8. 持久层和数据访问层_什么是持久层? JDBC 演变的 Mybatis 架构分析
  9. JBoss + EJB3 + MySql : 开发第一个EJB
  10. Entity framework 配置文件,实现类,测试类
  11. 冰点还原精灵软件功能及优势
  12. 分销商城系统模块_分销商城系统模块需求分析_OctShop
  13. (7)目标检测之CNN、ResNet用于目标3D检测框的回归估计、3D检测框绘制
  14. JAVA工作日历天数(工作日/非工作日)- 基于法定节假日
  15. 有一牧场,已知养牛27头,6天把草吃尽;养牛23头,9天把草吃尽。如果养牛21头,那么几天能把牧场上的草吃尽呢?并且牧场上的草是不断生长的。
  16. 西南科技大学计算机科学与技术学院官网,何刚(西南科技大学计算机科学与技术学院副教授)_百度百科...
  17. Python常见问题解决办法汇总
  18. html思维导图word版,(完整word版)非谓语动词练习及思维导图
  19. Python字符串连接
  20. 保障4-0521任务打卡

热门文章

  1. JAVA EE是什么?
  2. Domain-Adversarial Training of Neural Networks
  3. 【Python--torch(激活函数说明+代码讲解)】激活函数(sigmoid/softmax/ELU/ReLU/LeakyReLU/Tanh)
  4. PHP 笔试 + 面试题
  5. SSE(服务器推送事件)的介绍、问题及解决
  6. 数据时代做好知识主人-自创文章
  7. WEB、WEB标准、W3C的理解
  8. python学习——yield和yield from
  9. python实现分词算法代码
  10. 开源的容器虚拟化平台Docker学习笔记,个人私藏分享,不谢!