Fread()不会读取任何数据

时间:2017-12-11 16:17:47

标签: c

我遇到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;

有人能告诉我我做错了吗?

0 个答案:

没有答案