// 自定义二进制文件读取 #include #include typedef struct { int sid; char name[32]; int age; char sex[4]; } STU; int main() { FILE *f = fopen("d13.txt", "rb"); if (NULL == f) { return 1; } // 让光标移动到文件尾部 fseek(f, 0, SEEK_END); long file_size = ftell(f); // 获取文件大小 printf("文件大小: %ld B\n", file_size); int stu_num = file_size / sizeof(STU); printf("学生数目: %d 位\n", stu_num); fseek(f, 0, SEEK_SET); // 重置光标位置到头 for (int i = 0; i < stu_num; i++) { STU *s = calloc(1, sizeof(STU)); int fx = fread(s, sizeof(STU), 1, f); if (fx != 0) printf("%d %s %d %s\n", s->sid, s->name, s->age, s->sex); free(s); } fclose(f); return 0; }