为什么 fread 在 0 处停止读取

问题描述 投票:0回答:0

我正在尝试将 jpeg 文件读取为二进制文件,但似乎 fread 停止在 0 (0x00) 或根本没有读取文件。

网上还没发现类似的问题

它可以很好地读取 html 文件。

我尝试了不同的长度选项并尽我所能进行调试。 Perror 返回未知错误:0

我测试了两个不同的 jpg,并从两者中获得了相同的十六进制顺序。

char *readFile(char *name) {
    char *buffer;
    int length;
    FILE *f = fopen(name, "rb");
    if (f) {
        fseek(f, 0, SEEK_END);
        length = ftell(f);
        fseek(f, 0, SEEK_SET);
        buffer = malloc(sizeof(char) * (length + 1));
        buffer[length] = '\0';
        if(fread(buffer, sizeof(char), sizeof length, f));
        perror(buffer);
        printf("%s", buffer);
        fclose(f);
    }

    return buffer;
}

debugging of said code

fread file-descriptor
© www.soinside.com 2019 - 2024. All rights reserved.