void displayStudents() { printf("学号\t姓名\t语文\t数学\t语言\t平均分\n"); for (int i = 0; i < student_num; i++) { printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].avg_score); } }在此代码上增加一段导入文件的代码
时间: 2024-03-18 22:41:34 浏览: 19
好的,你可以在这段代码中增加一段导入文件的代码,实现从文件中读取学生信息并存储到`students`数组中。下面是一种实现方法:
```c
#include <stdio.h>
void readStudentsFromFile()
{
FILE *fp = fopen("students.txt", "r"); // 打开文件
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
student_num = 0; // 将学生数清零
while (fscanf(fp, "%s%s%f%f%f", students[student_num].id, students[student_num].name, &students[student_num].score[0], &students[student_num].score[1], &students[student_num].score[2]) != EOF) {
students[student_num].avg_score = (students[student_num].score[0] + students[student_num].score[1] + students[student_num].score[2]) / 3; // 计算平均分
student_num++; // 学生数加1
}
fclose(fp); // 关闭文件
}
void displayStudents()
{
printf("学号\t姓名\t语文\t数学\t语言\t平均分\n");
for (int i = 0; i < student_num; i++) {
printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].avg_score);
}
}
int main()
{
readStudentsFromFile(); // 从文件中读取学生信息
displayStudents(); // 输出学生信息
return 0;
}
```
这段代码中,`readStudentsFromFile`函数用于读取文件中的学生信息,并存储到`students`数组中。在函数中,首先使用`fopen`函数打开一个名为"students.txt"的文件,打开方式为只读模式。如果打开文件失败,则输出错误信息,并直接返回。接着,使用`fscanf`函数逐行读取文件中的数据,并存储到`students`数组中。读取到文件末尾时,`fscanf`函数会返回`EOF`,此时读取结束。最后,使用`fclose`函数关闭文件。
在`main`函数中,首先调用`readStudentsFromFile`函数,从文件中读取学生信息。之后,调用`displayStudents`函数,输出学生信息。