说记录的字段是使用数据文件描述中指定的类型存储的。这些字段彼此紧紧地存储在数据文件中。您无法在一次调用中将整个记录直接读取到C结构中,因为C在结构的某些字段之间插入了额外的未使用空间(这称为对齐填充。
您必须一次读取一个字段的数据记录。建议使用fread读取每个字段。
我的代码读取各种数据类型的结构记录。文件名是f1。
我尝试了2种方法
第一种方法:
fread(&rec1, sizeof(struct record), 1, f1);
第二种方法:
fread(&rec1.tin, sizeof(struct record), 1, f1);
printf("%hhu, ", rec1.tin);
fread(%rec1.love, sizeof(struct record), 1, f1);
printf("%s, ", rec1.love);
fread(&rec1.curve, sizeof(struct record), 1, f1);
printf("%d, ", rec1.curve);
fread(&rec1.history, sizeof(struct record), 1, f1);
printf("%lu, ", rec1.history);
fread(&rec1.ground, sizeof(struct record), 1, f1);
printf("%u, ", rec1.ground);
fread(&rec1.week, sizeof(struct record), 1, f1);
... and so on
当测试文件返回时,以上都不对我有用
**** Automarker: fread must read each struct field separately
****输出被忽略。您的程序退出,错误代码:202