#include <stdio.h> #include <stdlib.h> typedef struct student { int sno; char name[20]; int score[3]; } Student; int main() { FILE *fp; Student stu; fp=fopen("f1.dat","wb"); if(fp==NULL) {printf("cannot open"); exit(1); } int sno; scanf("%d",&sno); while(sno!=0) { stu.sno=sno; scanf("%s",&stu.name); scanf("%d %d %d",&stu.score[0],&stu.score[1],&stu.score[2]); fwrite(&stu,sizeof(struct student),1,fp); scanf("%d",&sno); } fclose(fp); fp = fopen("f1.dat", "rb"); if (fp == NULL) { printf("cannot open"); exit(1); } // 循环读取每个学生的信息,并打印输出 while (fread(&stu, sizeof(struct student), 1, fp) == 1) { printf("sno: %d\n", stu.sno); printf("name: %s\n", stu.name); printf("score1: %d, score2: %d, score3: %d\n", stu.score[0], stu.score[1], stu.score[2]); printf("\n"); } fclose(fp); return 0; }上述文件存放的数据如何增添或删除
时间: 2024-01-25 10:03:08 浏览: 55
#include <stdio.h>
4星 · 用户满意度95%
该代码中实现了学生信息的写入和读取,但是没有提供增添或删除学生信息的功能。如果您需要实现增添或删除学生信息的功能,可以考虑以下方法:
增添学生信息:
1. 在读入学生信息之前,先读取文件中已有的学生信息,存储在一个数组或链表中。
2. 读入新的学生信息,将其添加到数组或链表中。
3. 将所有的学生信息重新写入文件中。
删除学生信息:
1. 在读入学生信息之前,先读取文件中已有的学生信息,存储在一个数组或链表中。
2. 根据学号或姓名等关键字查找需要删除的学生信息,并将其从数组或链表中删除。
3. 将所有的学生信息重新写入文件中。
需要注意的是,对于大规模的学生信息,使用数组可能会导致内存不足的问题,此时可以考虑使用链表等数据结构来存储学生信息。另外,在实现增添或删除学生信息的过程中,需要小心处理文件指针的位置,避免出现数据丢失或损坏的情况。
阅读全文