#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 14:03:08 浏览: 63
该代码中实现了学生信息的写入和读取,但是没有提供增添或删除学生信息的功能。如果您需要实现增添或删除学生信息的功能,可以考虑以下方法:
增添学生信息:
1. 在读入学生信息之前,先读取文件中已有的学生信息,存储在一个数组或链表中。
2. 读入新的学生信息,将其添加到数组或链表中。
3. 将所有的学生信息重新写入文件中。
删除学生信息:
1. 在读入学生信息之前,先读取文件中已有的学生信息,存储在一个数组或链表中。
2. 根据学号或姓名等关键字查找需要删除的学生信息,并将其从数组或链表中删除。
3. 将所有的学生信息重新写入文件中。
需要注意的是,对于大规模的学生信息,使用数组可能会导致内存不足的问题,此时可以考虑使用链表等数据结构来存储学生信息。另外,在实现增添或删除学生信息的过程中,需要小心处理文件指针的位置,避免出现数据丢失或损坏的情况。
相关问题
#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); return 0; }
这是一段 C 语言代码,主要实现了将学生信息写入二进制文件的功能。代码中首先定义了一个结构体 Student,包含学号、姓名和三门课程成绩。然后在主函数中打开名为 f1.dat 的二进制文件,使用 fwrite 函数将每个学生的信息写入该文件,并通过 scanf 函数读入每个学生的信息,直到学号为 0 结束输入。最后关闭文件并返回 0。
程序结构 #include "sdtio.h" #include “stdlib.h” typedef struct student { int sno; char name[20]; int score[3]; } Student; int main() { FILE *fp; 定义结构体变量及其它需要的变量; 以wb的方式打开文件f1.dat; if(打开失败){ 输出失败信息; exit(1);} 读入第一个学生的学号; while(学号!=0) { 读入学生的姓名及成绩信息; 使用fwrite函数,将该学生的信息写入文件f1.dat中; 读入学生的学号; } 关闭文件fp; return 0; }
下面是一个类似的C程序实现将学生信息存储到磁盘文件中的例子:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct student {
int sno;
char name[20];
int score[3];
} Student;
int main() {
FILE *fp;
Student stu;
int sno, i;
if ((fp = fopen("f1.dat", "wb")) == NULL) { // 以wb的方式打开文件f1.dat
printf("无法打开文件!\n");
exit(1);
}
while (1) {
printf("请输入学号(输入0结束):");
scanf("%d", &sno);
if (sno == 0) {
break;
}
stu.sno = sno;
printf("请输入姓名:");
scanf("%s", stu.name);
printf("请输入3科成绩:");
for (i = 0; i < 3; i++) {
scanf("%d", &stu.score[i]);
}
fwrite(&stu, sizeof(Student), 1, fp); // 将结构体写入文件
}
fclose(fp); // 关闭文件fp
return 0;
}
```
在这个例子中,我们同样使用了一个结构体 `Student` 来存储学生信息。程序通过循环从键盘读入学生信息,并将其写入到磁盘文件 `f1.dat` 中。当输入学号为0时,输入结束。注意,我们使用了二进制文件进行读写操作,并且使用了 `fwrite` 函数将结构体写入文件,这样能够确保数据的完整性。
阅读全文