// 按行读取score.txt文件的所有内容,打印成绩及格的学号和成绩。 #include #include #include typedef struct stu_s { int sid; char dh; // 逗号 float score; struct stu_s *next; } STU; int main() { FILE *fp = fopen("score.txt", "r"); if (NULL == fp) { return 1; } // 计算文件大小 fseek(fp, 0, SEEK_END); long file_size = ftell(fp); printf("score.txt 文件大小: %ld B\n", file_size); // 重置光标位置 fseek(fp, 0, SEEK_SET); // 等同于使用 rewind(fp); // 按照 STU 的结构存储数据,计算出以存放学生数量 int stu_num = file_size / sizeof(STU); printf("学生数量: %d\n", stu_num); printf("\n学号\t成绩\n"); for (int i = 0; i < stu_num; i++) { STU *s = calloc(1, sizeof(STU)); fread(s, sizeof(STU), 1, fp); if (s->score > 60) printf("%d\t%.2f\n", s->sid, s->score); free(s); } fclose(fp); return 0; }