使用结构数组实现学生信息数据的录入和文件的读写任务
时间: 2024-03-19 21:43:10 浏览: 154
好的,我可以帮您解答这个问题。
首先,我们需要定义一个结构体来表示学生信息,比如:
```c
struct student {
char name[20];
int age;
char gender;
float score;
};
```
接着,我们可以定义一个结构数组来存储多个学生的信息,比如:
```c
struct student stu[100];
```
然后,我们可以通过循环来录入学生信息,例如:
```c
int n; // 学生数量
printf("请输入学生数量:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("姓名:");
scanf("%s", stu[i].name);
printf("年龄:");
scanf("%d", &stu[i].age);
printf("性别:");
scanf(" %c", &stu[i].gender); // 注意空格,避免读入上一次输入的回车字符
printf("成绩:");
scanf("%f", &stu[i].score);
}
```
录入完毕后,我们可以将学生信息写入文件,例如:
```c
FILE *fp;
fp = fopen("student.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return 0;
}
for (int i = 0; i < n; i++) {
fprintf(fp, "%s %d %c %.2f\n", stu[i].name, stu[i].age, stu[i].gender, stu[i].score);
}
fclose(fp);
```
写入完毕后,我们可以从文件中读取学生信息,例如:
```c
fp = fopen("student.txt", "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return 0;
}
for (int i = 0; i < n; i++) {
fscanf(fp, "%s %d %c %f", stu[i].name, &stu[i].age, &stu[i].gender, &stu[i].score);
}
fclose(fp);
```
这样,我们就实现了使用结构数组来存储学生信息,并将学生信息写入文件、从文件中读取的任务。