从文本文件“ex804.txt”格式化读取学生信息,然后将学生信息封装到结构体数组中,最后在标准输出设备中输出显示。 (1)“ex804.txt”的存储组织格式为:每行只保存一个同学信息;每行(每个同学)共有4个数据,分别为学号、姓名、年龄、成绩,每个数据之间以空格分隔。注:文本文件“ex804.txt”应与源文件“ex804.c”保存在同一个文件夹中。 (2)学生结构体定义如下: struct stu{ int id; //学号 char name[20]; //姓名 int age; //年龄 int score; //成绩 }; 目前,已完成main函数的编写,请编程实现“readFileForStu”函数和“stdoutForStu”函数。
时间: 2023-11-22 11:55:48 浏览: 140
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stu{
int id; //学号
char name[20]; //姓名
int age; //年龄
int score; //成绩
};
void readFileForStu(struct stu *s, int num) {
FILE *fp = fopen("ex804.txt", "r");
if (fp == NULL) {
printf("Cannot open file.\n");
return;
}
for (int i = 0; i < num; i++) {
fscanf(fp, "%d %s %d %d", &s[i].id, s[i].name, &s[i].age, &s[i].score);
}
fclose(fp);
}
void stdoutForStu(struct stu *s, int num) {
for (int i = 0; i < num; i++) {
printf("ID: %d, Name: %s, Age: %d, Score: %d\n", s[i].id, s[i].name, s[i].age, s[i].score);
}
}
int main() {
int num = 5; // 学生数量
struct stu students[num];
readFileForStu(students, num);
stdoutForStu(students, num);
return 0;
}
```
首先,我们定义了一个结构体 `stu` 来保存每个学生的信息。然后,我们编写了 `readFileForStu` 函数来读取文件内容,并将每个学生的信息存储在结构体数组中。最后,我们编写了 `stdoutForStu` 函数来在标准输出设备中输出学生信息。在 `main` 函数中,我们定义了学生数量,然后调用 `readFileForStu` 函数和 `stdoutForStu` 函数来实现文件读取和输出显示。
阅读全文