gpt4 book ai didi

c - 读取字符串中的二进制文件显示奇怪的输出

转载 作者:行者123 更新时间:2023-11-30 20:12:51 25 4
gpt4 key购买 nike

所以,这是我的场景:

我有一个二进制文件,得到的信息是:文件大小为1kb,文件中只有字符,文件是二进制的。

因此,我尝试读取并打印前 128 个字符来测试这样做:

FILE *f;
if((f = fopen(argv[1],"rb")) == NULL){
printf("CANNOT OPEN FILE\n");
exit(1);
}

char buffer[128];
printf("%d\n",fread(buffer, sizeof(char), 128, f));
printf("%s", buffer);

但是输出看起来根本不是一个128大小的字符串,输出是这样的: �1X�Z%]X�^��ƛ�T�tA!=p�>�A��g>~���k�*��;�2�

有谁知道我的错误是什么?

最佳答案

  1. 如果您的文件包含非 ASCII 字符,结果将看起来像垃圾。

  2. 如果读取失败,则缓冲区将未初始化,结果看起来像垃圾。

  3. 如果没有“NULL”终止符,那么您的部分或全部输出将看起来像垃圾。

  4. 即使缓冲区打印垃圾 - 并且存在 NULL 字符 - 输出也会以“\0”结束。

建议:

在记事本中查看该文件。或者,更好的是,在十六进制编辑器中查看它。

Linux 有一个"strings"该命令将仅打印二进制文件中的文本字符串。您可以在此处下载 Windows 版本的“strings”:

https://technet.microsoft.com/en-us/sysinternals/strings.aspx

关于c - 读取字符串中的二进制文件显示奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33987750/

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