我无法使用 fread() 将二进制文件转换为结构的链接列表。
结构:
struct MdbRec {
char name[16];
char msg[24];
};
相关代码:
FILE *file;
file = fopen( argv[1], "rb" );
struct List db;
initList(&db);
struct MdbRec *data = (struct MdbRec *)malloc(sizeof(struct MdbRec));
struct Node *last;
while( fread( data, 40, 1, file ) )
{
struct MdbRec *message = (struct MdbRec *)malloc(sizeof(struct MdbRec));
message = data;
if( !db.head )
{
last = addFront( &db, message );
db.head = last;
}
else
last = addAfter( &db, last, message );
if( fseek( file, 40, SEEK_CUR ) != 0)
break;
printf("read\n");
}
free(data);
removeAllNodes( &db );
addFront() 和 addAfter 是链表结构的方法,用于分配数据字段的空间。
当我用 Valgrind 运行它时,它表明我成功地分配了 2 个内存。一个显然是数据变量。其他 568 个字节让我很困惑。Valgrind 说错误来自我运行 fread() 时。