大学科技园网站建设,wordpress 管理员头像,网站原型是什么,东莞网络营销平台将学生信息#xff08;姓名、年龄、学号和平均分#xff09;写入文件#xff0c;然后读取显示出来。要求#xff1a;从控制台输入学生信息#xff1b;可以输入任意数目的学生信息#xff1b;文件每行存储一条学生信息#xff0c;姓名、年龄、学号、平均分以tab(\t)为分隔…将学生信息姓名、年龄、学号和平均分写入文件然后读取显示出来。要求从控制台输入学生信息可以输入任意数目的学生信息文件每行存储一条学生信息姓名、年龄、学号、平均分以tab(\t)为分隔。 代码实现 复制纯文本复制 #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( (fpfopen(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;} #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( (fpfopen(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 为 CtrlZ 组合键表示输入结束读取文件内容
棍哥 25 1 99.989998
码农宿舍 2 3 89.900002
www.coderbbs.com 3 2 100.000000 用记事本打开 D:/demo.txt可以看到刚才输入的内容。程序主要分为三个步骤。1) 以读写方式打开文件 wt 表示以读写方式打开文本文件如果文件不存在则创建如果存在清空内容。perror() 函数在程序退出前输出具体的错误信息。2) 从控制台获取学生信息并写入文件 通过while循环不断读取学生信息没有限制具体数目按 CtrlZ 组合键结束输入。CtrlZ表示文件输入结束即EOF。注意fprintf() 函数并不在结尾自动添加换行符(\n)显示增加换行符的目的是用记事本打开文件后可以清晰的看到学生信息一个学生占据一行否则所有学生信息都在一行阅读困难。后续读取文件时fscanf() 以换行符为读取结束标志没有换行符将不能正确读取数据这一点与 scanf() 类似。 两点说明输入结束时并没有将输入内容保存到文件而是停留在缓冲区导致后边读取文件时没有内容。所以必须通过 fflush() 函数刷新缓冲区将缓冲区中的内容写入文件。将缓冲区的内容写入文件后文件内部位置指针实际指向了文件结尾必须重置位置指针否则后续读取会出错。rewind() 函数将位置指针重置到文件开头。
3) 再从文件中读取学生信息 fscanf() 每次读取一行信息。