C语言文件:从键盘输入若干个学生数据(包括学号、姓名和成绩)保存到文本文件 a.txt 中(以负数成绩表示输入结束),然后再从该文件中读出并显示。

您所在的位置:网站首页 c语言读取地址的数据 C语言文件:从键盘输入若干个学生数据(包括学号、姓名和成绩)保存到文本文件 a.txt 中(以负数成绩表示输入结束),然后再从该文件中读出并显示。

C语言文件:从键盘输入若干个学生数据(包括学号、姓名和成绩)保存到文本文件 a.txt 中(以负数成绩表示输入结束),然后再从该文件中读出并显示。

2023-05-28 01:36| 来源: 网络整理| 查看: 265

一、题目

从键盘输入若干个学生数据(包括学号、姓名和成绩)保存到文本文件 a.txt 中(以负数成绩表示输入结束),然后再从该文件中读出并显示。

二、程序清单

作者在这里用到的是单链表(因为最近在学数据结构),但其实这题没必要用单链表,不用单链表会更简单,你们感兴趣的话就自己去研究吧,反正别指望我把优化代码发给你们(狗头表情)。

#define _CRT_SECURE_NO_WARNINGS #include #include typedef int Status; #define ERROR 0 #define OK 1 typedef struct student {//用单链表储存学生信息 int id;//学号 char name[20];//姓名 int score;//成绩 struct student* next;//下一个结点的地址 }; void CreatList(FILE* pfile, student* L)//尾插法建立单链表,并将链表中信息写入文件 { student* r = L; while (1) { student* p = (student*)malloc(sizeof(student));//开辟新结点 scanf("%d %s %d", &p->id, &p->name, &p->score);//输入学生信息 if (p->score < 0)//以负数成绩表示输入结束 break; fprintf(pfile, "%d %s %d\n", p->id, p->name, p->score);//将链表信息链入文件 r->next = p;//将新结点插入链表尾部 r = r->next; } r->next = NULL; } void ReadFile(FILE* pfile, student* L)//读取文件信息并存入链表中(尾插法) { rewind(pfile);//写操作转读操作需要使用fseek或rewind(需将指针归位用rewind,无需归位用fseek)!!! student* r = L; printf("学号\t姓名\t成绩\n"); while(!feof(pfile))//若文件未结尾,则进入循环 { student* p = (student*)malloc(sizeof(student));//尾插法建立单链表 fscanf(pfile, "%d %s %d\n", &p->id, &p->name, &p->score);//读取文件信息并存入链表中 printf("%d\t%s\t%d\n", p->id, p->name, p->score); //输出学生信息 r->next = p; r = r->next; } r->next = NULL; } int main() { FILE* pfile; if ((pfile = fopen("a.txt", "w+")) == NULL)//用更新模式!(w+:可读可写,但会清空原文件内容) { printf("文件打开失败!\n"); exit(0); } student* L1 = (student*)malloc(sizeof(student)); student* L2 = (student*)malloc(sizeof(student)); CreatList(pfile, L1);//调用函数 ReadFile(pfile, L2);//调用函数 if (fclose(pfile)) { printf("不能正常关闭文件!\n"); exit(0); } return 0; } 三、运行结果

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3