gpt4 book ai didi

c - 为什么我在 C 中使用 fread() 得不到预期的结果?

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:39 24 4
gpt4 key购买 nike

这是我的代码:

#include <stdio.h>

int main(void) {

FILE *fp;
unsigned int i;
char bytes[512];
fp = fopen("myFile","r");
for(i = 0;i <= 512;i++) {
fread(&bytes, sizeof(bytes), 1, fp);
printf("bytes[%d]: %x\n", i, bytes[i]);
}
}

这是预期的输出

$ hexdump myFile
0000000 aa55 aa55 0060 0000 0a17 0000 b1a5 a2ea
0000010 0000 0000 614c 7563 616e 0000 0000 0000
0000020 0000 0000 0a68 0000 1001 421e 0000 0000
0000030 f6a0 487d ffff ffff 0040 0000 002f 0000

但这是我从我的程序中看到的

bytes[0]: 55
bytes[1]: 8
bytes[2]: ffffffc8
bytes[3]: ffffffdd
bytes[4]: 22
bytes[5]: ffffffc8
bytes[6]: ffffff91
bytes[7]: 63
bytes[8]: ffffff82

我的明显猜测是,我要么处理错误并接收到错误的数据,要么我错误地打印它并以错误的方式查看它。

最佳答案

每次循环时,您都从文件中读取连续的 512 字节 block ,并且只打印每个 block 的一个字节。您可能想一次性读取这 512 个字节,然后再打印它们,如下所示:

fread(&bytes, sizeof(bytes), 1, fp);
for(i = 0;i < 512;i++) {
printf("bytes[%d]: %x\n", i, bytes[i]);
}

(另外:一些错误检查不会出错,正如 Dav 指出的那样,您应该检查您是否确实从文件中读取了预期的字节数。)

关于c - 为什么我在 C 中使用 fread() 得不到预期的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2581557/

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