fread()不会从二进制文件中读取正确的值

时间:2014-07-29 13:56:00

标签: c integer fread

我有一个只包含整数的二进制文件。我尝试使用以下代码读取10个整数:

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char **argv){

  int* data=(int*)malloc(10*sizeof(int));

  FILE *fp=fopen("data.bin","rb");
  if(fp==NULL){printf("Error opening the file data.bin\n");}

  size_t w=fread(data,sizeof(int),10,fp);
  if(w!=10){printf("Error reading the data from data.bin\n");}
  fclose(fp);


  printf("%i",data[0]);
}

问题在于读取的值不是预期的。例如,第一个整数是0,但printf命令打印86183936.我将文件视为十六进制,字节是应该的。

1 个答案:

答案 0 :(得分:0)

我尝试在我创建的数据文件上运行您的程序,它运行正常。我怀疑您的数据文件格式不正确。

我在一个32位整数的小端处理器上运行。这是我的二进制文件的格式: enter image description here