无法打开图片C.

时间:2014-11-24 11:20:30

标签: c image file fread

我试图打开图像并将其复制到数组中。但是,如果我尝试打印数组,那么图像的字节只存储了一个"?"打印出来。它不应该在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);

2 个答案:

答案 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。我会将它们打印为整数。