gpt4 book ai didi

c - 从文件中读取十六进制值并在 C 中显示它们

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

我有一个 key.hex 文件,其中包含:

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

作为十六进制值。我尝试阅读它们并立即打印出来:

unsigned char key[16];
FILE *secretkey;
secretkey = fopen("key.hex", "r+");
fgets(key, 16, secretkey);
int j = 0;
for(j = 0; j < sizeof(key) ; j++) {
printf("%02x ", key[j]);
}

但是,当我得到以下输出时:

00 01 02 03 04 05 06 07 08 09 0a 00 80 d2 73 b7

为什么输出与文件内容不对应?

最佳答案

保罗·R.:
在典型的 ASCII 环境中,0a 是换行符(LF\n),它会终止您的 fgets 调用,因此您不会读取剩余字节。
使用 fread 而不是 fgets。

例如
(来自 BLUEPIXY 评论中链接的代码的最相关行,它是一个完整的演示者):

secretkey = fopen("key.hex", "r+b");
fread(key, 1, sizeof key, secretkey);

(这从两条评论中汇集了一个答案,每条评论都是一个不错的答案。如果两位作者中的任何一个提出了自己的答案并要求我删除,我提议删除。)

关于c - 从文件中读取十六进制值并在 C 中显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46443079/

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