我试图打开图像并将其复制到数组中。但是,如果我尝试打印数组,那么图像的字节只存储了一个"?"打印出来。它不应该在rb中打开吗?下面是代码:
char* nomefich = "cloud.png";
FILE *fi = fopen(nomefich,"rb");
buf = malloc(size); //size represents the size of file (I used struct stat to obtain that)
fread(buf,size,1,fi);
fclose(fi);
答案 0 :(得分:1)
如果要打印二进制文件的内容,则需要将值写为十六进制值
e.g。
for (i = 0; i < size; ++i)
{
printf( "%2X ", buf[i] );
if ( i != 0 && (i % 16) == 0 )
{
putchar('\n');
}
}
答案 1 :(得分:0)
应该打开文件以便以二进制模式读取 - 因此rb。只会打印可打印的字符,如果您尝试打印为字符串,则只有在达到二进制零时才会打印出来。\ 0&#39; \ 0&#39;字符。
如果您想确保阅读文件,可以打印签名字符,您可以在此处找到http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html。我会将它们打印为整数。