从文件读取时输出 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 文件。我的错。