0

我的以下 C 代码有问题:

int main(void){

    FILE* infile = fopen("file","r);
    FILE* fp = NULL;

    unsigned char* buffer = malloc(512);

    while( fread(buffer,512,1,infile) > 0 ){ //reading a file block by block

           if(buffer[0] == 0xff){
               ... //defining variable "name"
               if(fp != NULL)fclose(fp);
               fp = fopen(name,"w+");
               fwrite(buffer,512,1,fp);
           } else if(fp != NULL) {
                   fwrite(buffer,512,1,fp);
           }

    }

}

似乎我无法在 fclose 之后使用相同的指针打开 fopen,为什么?我需要我的指针在主要的任何地方都可以访问,所以我不能在我的时间里声明一个新的。

编辑:天哪,问题解决了。我可能是超级累了。我正在编译错误的文件。反正...

谢谢各位!

4

1 回答 1

1

很难说出原因,因为您没有向我们展示您的所有代码。但是,重新打开文件应该非常简单:

#include <stdio.h>

int main(void)
{
  FILE* fp = NULL;
  char name[] = "somefile";

  for (;;)
  {
    // do something
    if ((fp = fopen(name, "w+")) == NULL)
      break;
    // do something with the file
    fclose(fp);
    // do something
  }

  return 0;
}
于 2013-03-27T00:40:33.197 回答