gpt4 book ai didi

c - 第一次调用 fread 后 ftell 错误

转载 作者:行者123 更新时间:2023-12-04 10:08:03 25 4
gpt4 key购买 nike

所以我有一个非常简单的程序可以读取文件的前 3 个字节:

int main(void){    FILE *fd = NULL;    int i;    unsigned char test = 0;    fd = fopen("test.bmp", "r");    printf("position: %ld\n", ftell(fd));    for (i=0; i<3; i++) {        fread(&test, sizeof (unsigned char), 1, fd);        printf("position: %ld char:%X\n", ftell(fd), test);    }    return (0);}

当我尝试使用文本文件时,它工作正常:

position: 0position: 1 char: 61position: 2 char: 62position: 3 char: 63

但是当我用 PNG 运行它时,我得到:

position: 0position: 147 char:89position: 148 char:50position: 149 char:4E

请注意,文件的前 3 个字节确实是 89 50 4E,但我不知道 147 从何而来。使用 bmp 文件,我得到:

position: 0position: -1 char:42position: 0 char:4Dposition: 1 char:76

你知道这些第一个位置是从哪里来的吗?非常感谢您的帮助

最佳答案

您需要以二进制模式打开文件:

fd = fopen("test.bmp", "rb");

如果您尝试在文本模式下读取像位图这样的二进制文件,对应于回车符和换行符的字节会使事情变得困惑。

关于c - 第一次调用 fread 后 ftell 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25351493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com