C语言向文件写入学生信息并读取显示出来 您所在的位置:网站首页 读出当前页面文字 C语言向文件写入学生信息并读取显示出来

C语言向文件写入学生信息并读取显示出来

2024-01-12 11:51| 来源: 网络整理| 查看: 265

C语言向文件写入学生信息并读取显示出来 代码功能:

1.从控制台输入学生信息(姓名、年龄、学号和平均分),可以输入任意数目的信息数据。 2.将输入的学生信息数据写入文件中进行保存,文件每行存储一条学生信息,姓名、年龄、学号、平均分以tab(\t)为分隔。 3.学生信息保存成功都并读取出来进行查看。

代码中包含的函数介绍:

1.fopen()函数原型: FILE *fopen(const char filename, const char mode); 函数功能: 使用给定的模式mode打开filename所指向的文件。 2.字符串 "wt+"作用: 以读/写方式打开或新建一个文本文件,允许读和写。 3.perror()函数功能: 用来将上一个函数发生错误的原因输出到标准设备 4.fprintf()函数原型: int fprintf (FILE stream, const charformat, [argument]) 功能: fprintf()函数根据指定的格式(format),向输出流(stream)写入数据(argument) 注意:fprintf() 函数并不在结尾自动添加换行符(\n)

5.fscanf()函数原型: int fscanf(FILE *stream, char *format[,argument…]); 功能: 根据指定的格式(format),从一个文件流(stream)中读取数据(argument),fscanf遇到空格和换行时结束,注意空格时也结束 6.fflush()函数功能: 刷新缓冲区,将缓冲区中的内容写入文件。 7.rewind()函数功能: 是将文件内部的指针重新指向一个流的开头 8.fclose()函数功能: 关闭一个流。注意:使用fclose()函数就可以把缓冲区内最后剩余的数据输出到内核缓冲区,并释放文件指针和有关的缓冲区。

代码流程:

一、以读写的模式打开文件,如果文件存在则清空里面的数据,如果文件不存在则新建文件。 二、从控制台输入学生信息并写入文件中,通过while循环不断读取学生信息,没有限制具体数目,按 Ctrl+Z 组合键结束输入。Ctrl+Z表示文件输入结束,即EOF。 注意:fprintf() 函数并不在结尾自动添加换行符(\n),显示增加换行符的目的是: 用记事本打开文件后可以清晰的看到学生信息,一个学生占据一行;否则所有学生信息都在一行,阅读困难。 后续读取文件时,fscanf() 以换行符为读取结束标志,没有换行符将不能正确读取数据。 两点说明: 1.输入结束时并没有将输入的学生信息保存到文件中,而是停留在缓冲区,导致后边读取文件时没有内容。所以必须通过 fflush() 函数刷新缓冲区,将缓冲区中的内容写入文件。 2.将缓冲区的内容写入文件后,文件内部位置指针实际指向了文件结尾,必须重置位置指针,否则后续读取会出错。rewind() 函数将位置指针重置到文件开头。 三、最后用 fscanf()函数 从文件中将学生信息一行一行的读取出来

代码实现: #include #include #include #define FILE_PATH "D:/VScode-progect/demo.txt" //文件路径 int main() { char name[30]; //姓名 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%0.2f\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 %0.2f\n", name, age, studNo, score); } fclose(fp); system("pause"); } 结果展示:

在这里插入图片描述 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有