我遇到fread()问题。我正在学习C,我无法处理必须从二进制文件中读取数据的函数问题。以下是我的功能代码:
bool deserialize(struct list** lst, const char* filename)
{
FILE *file = fopen(filename, "rb");
if(!file)
return false;
int num = 0;
int i = 0;
while(i < 10)
{
fread(&num, sizeof(int), 1, file); // <- this not work
printf("%u\n", num);
printf("%ld\n", ftell(file));
i++;
//list_add_back(num, &(*lst));
}
return true;
}
问题是fread没有读任何东西。 num变量仍为0,ftell表示文件中的指针位于同一位置(0)。存在二进制文件(使用fwrite在二进制文件中保存列表之前的功能,这是下一个要做的功能)。文件的内容是1到10之间的数字。下面你可以看到xxd显示文件中的内容:
unsigned char linkedlist_bin[] = {
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
0x0a, 0x00, 0x00, 0x00
};
unsigned int linkedlist_bin_len = 40;
有人能告诉我我做错了吗?