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 に答える