从文件读取时输出 returns 空结果
Output returns null results when read from a file
我正在尝试制作一个信息系统,但每当我尝试打印输出时,它只会打印出我输入的最后一个内容。这是我正在使用的功能。
void displayStudents(){
FILE *fp;
fp = fopen("studentlist.txt", "rb");
if(!fp){
printf("File could not be opened.\n");
}else{
studentInfo s;
while(fread(&s, sizeof(studentInfo), 1, fp) && !feof(fp)){
printf("Student Number: %i\n", s.studentNumber);
printf("Last Name: %s\n", s.lastName);
printf("First Name: %s\n", s.firstName);
printf("Course: %s\n", s.course);
printf("Year Level: %i\n", s.yearLevel);
printf("Age: %i\n", s.age);
printf("Sex: %c\n", s.sex);
printf("Final Grade: %i\n", s.finalGrade);
printf("\n\n");
}
fclose(fp);
}
}
其中 studentInfo
是一个包含以下内容的结构...
struct studentInfo{
int studentNumber;
char lastName[15];
char firstName[15];
char course[15];
int yearLevel;
int age;
char sex;
int finalGrade;
};
typedef struct studentInfo studentInfo;
程序输出如下:
Student Number: 0
Last Name:
First Name:
Course:
Year Level: 0
Age: 0
Sex:
Final Grade: 0
Student Number: 0
Last Name:
First Name:
Course:
Year Level: 0
Age: 0
Sex:
Final Grade: 0
Student Number: 3
Last Name: Rambo
First Name: Ra
Course: CS
Year Level: 1
Age: 10
Sex: F
Final Grade: 89
我试过注册 3 名学生,但它只打印最后一个而不是之前的信息。我希望它能够显示我输入的所有学生信息。
我意识到我将二进制文件放入文件中并且只是将其作为 .txt
读取,所以它从未成功。这就是为什么我只是将我的文件类型从 .txt
更改为 .bin
这样它会读取并且确实如此。当我应该阅读 rb
时,我也像阅读任何其他文本一样正常阅读 bin 文件。我的错。
我正在尝试制作一个信息系统,但每当我尝试打印输出时,它只会打印出我输入的最后一个内容。这是我正在使用的功能。
void displayStudents(){
FILE *fp;
fp = fopen("studentlist.txt", "rb");
if(!fp){
printf("File could not be opened.\n");
}else{
studentInfo s;
while(fread(&s, sizeof(studentInfo), 1, fp) && !feof(fp)){
printf("Student Number: %i\n", s.studentNumber);
printf("Last Name: %s\n", s.lastName);
printf("First Name: %s\n", s.firstName);
printf("Course: %s\n", s.course);
printf("Year Level: %i\n", s.yearLevel);
printf("Age: %i\n", s.age);
printf("Sex: %c\n", s.sex);
printf("Final Grade: %i\n", s.finalGrade);
printf("\n\n");
}
fclose(fp);
}
}
其中 studentInfo
是一个包含以下内容的结构...
struct studentInfo{
int studentNumber;
char lastName[15];
char firstName[15];
char course[15];
int yearLevel;
int age;
char sex;
int finalGrade;
};
typedef struct studentInfo studentInfo;
程序输出如下:
Student Number: 0
Last Name:
First Name:
Course:
Year Level: 0
Age: 0
Sex:
Final Grade: 0
Student Number: 0
Last Name:
First Name:
Course:
Year Level: 0
Age: 0
Sex:
Final Grade: 0
Student Number: 3
Last Name: Rambo
First Name: Ra
Course: CS
Year Level: 1
Age: 10
Sex: F
Final Grade: 89
我试过注册 3 名学生,但它只打印最后一个而不是之前的信息。我希望它能够显示我输入的所有学生信息。
我意识到我将二进制文件放入文件中并且只是将其作为 .txt
读取,所以它从未成功。这就是为什么我只是将我的文件类型从 .txt
更改为 .bin
这样它会读取并且确实如此。当我应该阅读 rb
时,我也像阅读任何其他文本一样正常阅读 bin 文件。我的错。