遇到问题用C读取文件

时间:2012-10-07 17:25:11

标签: c

我正在尝试解决一个问题,这个问题要求我读取一个文件并生成另一个文件,该文件与原始文件具有相同的内容但每隔四个字节都被删除。我试着这样做...

int main()
{
  FILE *p;
  FILE *q;
  int i=0,k=0;
  char c;

  p = fopen("C:\\Users\\Teja\\Desktop\\Beethoven.raw","rw");
  q = fopen("C:\\Users\\Teja\\Desktop\\Beethoven_new.raw","w+");

  printf("%x is the EOF character \n",EOF);
  while((c=fgetc(p))!=EOF)
  {

     if(i==3){
      i=0;
      printf("Removing %x %d \n",c,k++);
     }
     else{
      printf("Putting %x %d \n",c,k++);
      fputc(c,q);
      i++;
     }
  }
  fclose(p);
  fclose(q);

  return 0;
}

我试图读取的文件是.raw文件,大约10-15 MB。我注意到上面的代码通常在88字节后停止读取文件。有没有办法读取大文件或我做错了什么?

2 个答案:

答案 0 :(得分:2)

除了已经指出的内容之外,还有关于打开文件的说明:它听起来像是二进制文件中的文件,这意味着您必须在模式字符串中添加b。此外,rw不是一种模式,因为您只需从p读取rb,因为您只需要qwbwb+ {1}}。

顺便说一下,你需要fgetc返回int的原因是因为fgetc必须返回257个唯一值:char的所有可能值,即{{1}通过0x00以及表示EOF的独特内容,通常为0xFF

答案 1 :(得分:1)

更改

char c;

int c;

fetgetc()的返回类型为int,而非char