【发布时间】:2019-03-21 19:59:29
【问题描述】:
我正在尝试在固定文件位置 (256) 处从二进制文件打印固定数量的字节 (128) 到屏幕。 但是,结果显示如下:
作为参考,我真的不知道二进制文件中有什么;但我怀疑它不是正方形。
代码在这里:
int main()
{
FILE *file;
char *buffer;
file = fopen ( "binaryfile.bin" , "rb" );
if (file==NULL)
{
fputs ("Couldn' open file",stderr);
exit (-1);
}
fseek (file , 0 , 256);
buffer = (char*) malloc (sizeof(char)*128);
fread (buffer,128,1,file);
fwrite (buffer , sizeof(char)*128, 1, stdout);
return 0;
}
【问题讨论】:
-
为什么您希望二进制文件中有可打印的字符?文件中没有正方形,只有在上下文中有意义的数字。您可以通过在循环中打印它们或使用文件转储实用程序来检查它们的值。一些文本编辑器也允许您以十六进制格式查看原始文件字节。
-
这可能是垃圾,因为你得到随机控制字符和上半部分字符,这取决于你的终端字符集。你想要一个十六进制编辑器吗?
-
您实际上非常奇怪地使用
fwrite- 它从元素大小和元素数量获得单独的参数,但是您将两者相乘...(和sizeof (char) 总是 1)