将学生信息(姓名、年龄、学号和平均分)写入文件,然后读取显示出来。

要求:

  • 从控制台输入学生信息;
  • 可以输入任意数目的学生信息;
  • 文件每行存储一条学生信息,姓名、年龄、学号、平均分以tab(\t)为分隔。

代码实现:

复制纯文本复制

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <errno.h>
  4. #define FILE_PATH "D:/demo.txt" // 文件路径
  5. int main(){
  6. char name[20]; // 姓名
  7. int age; // 年龄
  8. int studNo; // 学号
  9. float score; // 平均分
  10. FILE *fp; // 文件指针
  11. // 判断文件是否能够正确创建/打开
  12. if( (fp=fopen(FILE_PATH,"wt+")) == NULL ){
  13. perror(FILE_PATH);
  14. exit(1);
  15. }
  16. // 从控制台输入学生信息并写入文件
  17. printf("请输入姓名、年龄、学号和平均分(以空格分隔):\n");
  18. while(scanf("%s %d %d %f", name, &age, &studNo, &score)!= EOF){
  19. fprintf(fp,"%s\t%d\t%d\t%f\n", name, age, studNo, score);
  20. }
  21. // 刷新缓冲区,将缓冲区的内容写入文件
  22. fflush(fp);
  23. // 重置文件内部位置指针,让位置指针指向文件开头
  24. rewind(fp);
  25. // 从文件中读取学生信息
  26. printf("\n读取文件内容:\n");
  27. while(fscanf(fp, "%s\t%d\t%d\t%f", name, &age, &studNo, &score) != EOF){
  28. printf("%s %d %d %f\n", name, age, studNo, score);
  29. }
  30. fclose(fp);
  31. return EXIT_SUCCESS;
  32. }
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>#define FILE_PATH "D:/demo.txt"  // 文件路径int main(){char name[20];  // 姓名 int age;  // 年龄 int studNo;  // 学号 float score;  // 平均分 FILE *fp;  // 文件指针 // 判断文件是否能够正确创建/打开 if( (fp=fopen(FILE_PATH,"wt+")) == NULL ){perror(FILE_PATH);exit(1);}// 从控制台输入学生信息并写入文件printf("请输入姓名、年龄、学号和平均分(以空格分隔):\n");while(scanf("%s %d %d %f", name, &age, &studNo, &score)!= EOF){fprintf(fp,"%s\t%d\t%d\t%f\n", name, age, studNo, score);}// 刷新缓冲区,将缓冲区的内容写入文件 fflush(fp);// 重置文件内部位置指针,让位置指针指向文件开头rewind(fp);// 从文件中读取学生信息printf("\n读取文件内容:\n");while(fscanf(fp, "%s\t%d\t%d\t%f", name, &age, &studNo, &score) != EOF){printf("%s  %d  %d  %f\n", name, age, studNo, score);}fclose(fp);return EXIT_SUCCESS;
}

运行结果:

请输入姓名、年龄、学号和平均分(以空格分隔):
棍哥 25 1 99.99
码农宿舍 2 3 89.9
www.coderbbs.com 3 2 100
^Z  // ^Z 为 Ctrl+Z 组合键,表示输入结束读取文件内容:
棍哥  25  1  99.989998
码农宿舍  2  3  89.900002
www.coderbbs.com  3  2  100.000000

用记事本打开 D:/demo.txt,可以看到刚才输入的内容。

程序主要分为三个步骤。

1) 以读写方式打开文件

wt+ 表示以读写方式打开文本文件,如果文件不存在,则创建,如果存在,清空内容。

perror() 函数在程序退出前,输出具体的错误信息。

2) 从控制台获取学生信息,并写入文件

通过while循环不断读取学生信息,没有限制具体数目,按 Ctrl+Z 组合键结束输入。Ctrl+Z表示文件输入结束,即EOF。

注意:fprintf() 函数并不在结尾自动添加换行符(\n),显示增加换行符的目的是:

  • 用记事本打开文件后可以清晰的看到学生信息,一个学生占据一行;否则所有学生信息都在一行,阅读困难。
  • 后续读取文件时,fscanf() 以换行符为读取结束标志,没有换行符将不能正确读取数据,这一点与 scanf() 类似。

两点说明:

  • 输入结束时并没有将输入内容保存到文件,而是停留在缓冲区,导致后边读取文件时没有内容。所以必须通过 fflush() 函数刷新缓冲区,将缓冲区中的内容写入文件。
  • 将缓冲区的内容写入文件后,文件内部位置指针实际指向了文件结尾,必须重置位置指针,否则后续读取会出错。rewind() 函数将位置指针重置到文件开头。

3) 再从文件中读取学生信息

fscanf() 每次读取一行信息。

C语言向文件写入内容并读取显示相关推荐

  1. R语言将文件写入CSV,并读取

    R语言将文件写入CSV,并读取 # 写入文件 write.csv(data,file = "mydata.csv",row.names = F) # 读文件 data_handle ...

  2. java给txt文件写入内容_java代码 如何向TXT文件写入内容?

    展开全部 向txt文件写入内容基本思路就是获得一个62616964757a686964616fe59b9ee7ad9431333337613134file对象,新建一个txt文件,打开I/O操作流,使 ...

  3. java向指定文件继续写内容_java 向指定文件写入内容(如文件存在,则先删除再创建;写入如目录不存在,则创建)...

    /** * 向指定文件写入内容(如文件存在,则先删除再创建写入) * * @param content 保存内容 * @param path 文件完整路径 * @throws IOException ...

  4. 如何使用echo指令向文件写入内容

    如何使用echo指令向文件写入内容 0.前言     本文总结如何使用echo命令向文件中写入内容,例如使用echo指令覆盖文件内容,使用echo指令向文件追加内容,使用echo指令往文件中追加制表符 ...

  5. Ubuntu文件写入内容时出现错误 E121:无法打开并写入文件解决方案

    Ubuntu文件写入内容时出现错误 E121:无法打开并写入文件解决方案 参考文章: (1)Ubuntu文件写入内容时出现错误 E121:无法打开并写入文件解决方案 (2)https://www.cn ...

  6. 用C语言创建文件写入并读取

    我创建一个新文件,用fprintf写入一个数组,没问题.但是当我再次直接读取这个文件里的数组时就出错即这样: #include "stdio.h" int main() { FIL ...

  7. C语言新建文件写入数据

    经过前面的学习,我们知道如何从一个文件中读取数据.那么,下面,我们学习怎么样往一个文件中写入数据.C语言提供了fwrite()函数,用于往一个打开的文件指针中写入数据.函数的定义如下: size_t ...

  8. python打开文件写入内容_python-11 文件的打开和写入

    # 11 章 # 11.1 打开文件 open # f = open('somefile.txt', 'r+') # print(f.read()) # print(f.write('564')) # ...

  9. java 读取文件文本内容_Java读取文本文件

    java 读取文件文本内容 There are many ways to read a text file in java. Let's look at java read text file dif ...

最新文章

  1. 【事故反演】配置过程(变位)
  2. C# 读取在存储过程多结果集
  3. Android拨打电话号功能
  4. 【2016年第5期】基于深度学习的光学遥感机场与飞行器目标识别技术
  5. Python爬取网页中表格数据并导出为Excel文件
  6. DispatcherServlet与初始化主线
  7. c4d怎么导入图片描图建模_巧用C4D的参考图学习角色人物建模(躯干)
  8. Dreamweaver CS6 行为概述
  9. java SE的内容有什么_JavaSE包含哪些内容?JavaEE呢?
  10. EDI电除盐纯水设备
  11. 【思维导图】她提出了“计算思维”,并解释我们为什么要学会跟机器对话 | 造访·周以真【整理自公众号:造就】
  12. Sun Java System Message Queue - Packet acknowledge failed after failover
  13. 04 cefsharp谷歌浏览器多开页面的实现
  14. VR全景展示是如何实现的?怎么宣传品牌?
  15. js 翻转表格(行列互换)
  16. 编码分布式矩阵乘法(Coded Distributed Matrix Multiplication, CDMM)问题简单介绍
  17. 什么是数据产品,怎么设计一个好用的数据产品
  18. C/C++黑魔法-利用include宏读文件
  19. 1366 mysql_mysql ERROR 1366
  20. matlab狐狸与野兔数学模型,狐狸与兔子数学模型的论文

热门文章

  1. python中字典的输出序列_python3:序列_字典(常用基础知识)
  2. c语言与python通信_C和Python – 与套接字通信
  3. flutter天气_牛笔!自己用Flutter撸一个天气APP
  4. pyautogui typewrite_解放双手:Pyautogui帮你work
  5. flask get 参数_用它 5 分钟以后,我放弃用了四年的 Flask
  6. python for循环1 到10_python for循环(1)
  7. python云计算服务_python 云计算平台
  8. 语言还是你不得不服的大哥级别编程语言!
  9. 西北工业大学计算机毕业论文,西北工业大学硕士论文开题报告应注意的事项
  10. vba中有多线程吗_VBA会被Python代替吗?