C语言在文件中输入10个学生的信息,为什么最后一个读取不出来
时间: 2024-04-09 18:33:48 浏览: 30
可能的原因是在读取最后一个学生信息之前,文件指针没有正确移动到下一个学生信息的位置。请确保在每次读取完一个学生信息后,使用适当的文件指针操作将指针移动到下一个学生信息的位置。特别是在读取最后一个学生信息后,要确保文件指针移动到文件末尾,以确保下一次读取操作不会出错。
以下是一个示例代码片段,演示如何在文件中输入并读取10个学生的信息:
```c
#include <stdio.h>
typedef struct {
char name[50];
int age;
} Student;
int main() {
FILE *file = fopen("students.txt", "w");
if (file == NULL) {
printf("无法打开文件。\n");
return 1;
}
// 输入学生信息
for (int i = 0; i < 10; i++) {
Student student;
printf("请输入第 %d 个学生的姓名:", i+1);
scanf("%s", student.name);
printf("请输入第 %d 个学生的年龄:", i+1);
scanf("%d", &student.age);
// 写入学生信息到文件
fwrite(&student, sizeof(Student), 1, file);
}
fclose(file);
// 读取学生信息
file = fopen("students.txt", "r");
if (file == NULL) {
printf("无法打开文件。\n");
return 1;
}
for (int i = 0; i < 10; i++) {
Student student;
// 从文件读取学生信息
fread(&student, sizeof(Student), 1, file);
printf("第 %d 个学生的姓名:%s\n", i+1, student.name);
printf("第 %d 个学生的年龄:%d\n", i+1, student.age);
}
fclose(file);
return 0;
}
```
请注意,这只是一个示例代码片段,实际应用中可能需要进行更多的错误检查和逻辑处理。