c语言用结构体且文件读取创建一个包含姓名,四个专业的志愿编码填写,成绩的学生志愿表有关代码
时间: 2024-01-22 18:19:59 浏览: 65
C语言利用结构体数组实现学生成绩管理系统.doc
5星 · 资源好评率100%
以下是一个简单的示例代码,用于读取文件中的学生志愿表并将其存储在结构体数组中:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
#define MAX_NAME_LEN 50
typedef struct {
char name[MAX_NAME_LEN];
int choices[4];
float score;
} Student;
int main() {
FILE *fp;
Student students[MAX_STUDENTS];
int num_students = 0;
// 打开文件
fp = fopen("students.txt", "r");
if (fp == NULL) {
fprintf(stderr, "Failed to open file\n");
exit(1);
}
// 读取文件中的数据
while (fscanf(fp, "%s %d %d %d %d %f", students[num_students].name,
&students[num_students].choices[0], &students[num_students].choices[1],
&students[num_students].choices[2], &students[num_students].choices[3],
&students[num_students].score) == 6) {
num_students++;
}
// 关闭文件
fclose(fp);
// 输出读取到的数据
for (int i = 0; i < num_students; i++) {
printf("Name: %s\n", students[i].name);
printf("Choices: %d %d %d %d\n", students[i].choices[0], students[i].choices[1],
students[i].choices[2], students[i].choices[3]);
printf("Score: %.2f\n", students[i].score);
}
return 0;
}
```
上面的代码中,我们定义了一个 `Student` 结构体来保存每个学生的信息,包括姓名、四个志愿编码和成绩。我们还定义了一个 `MAX_STUDENTS` 常量来限制最大学生数量,以及一个 `MAX_NAME_LEN` 常量来限制姓名的最大长度。
在 `main` 函数中,我们首先打开了一个名为 `students.txt` 的文件,并检查是否成功打开。然后,我们使用 `fscanf` 函数从文件中读取每个学生的信息,并将其存储在结构体数组 `students` 中。我们使用 `num_students` 变量来记录读取到的学生数量。最后,我们关闭了文件,并通过循环输出了每个学生的信息。
请注意,上面的代码假设文件中每行都是按照如下格式排列的:
```
姓名 志愿1 志愿2 志愿3 志愿4 成绩
```
如果你的文件格式不同,你需要相应地修改代码。
阅读全文