0

私は次のコードを持っています:

int checkCorrectness(int i,char *iStr)
{
   if(atoi(iStr) == i)
     return 1;
   return 0;
}
void foo(int i)
{
    printf("inside foo %d\n",i);
}
void print()
{
    char mystring[100];
    freopen("myfile.txt","w+",stdout);
    for(int i =0;i < 100;++i)
    {
      foo(i);
      FILE *f = fopen("myfile.txt","r");
      if (f == NULL) perror ("Error opening file");
      else {
         while ( fgets (mystring , 100 , f) != NULL );
         if(!checkCorrectness(i,mystring);
            break;
         fclose (f);

      }
     }
    fclose(stdout);
}

このコードは保存されますか?つまり、freopenが呼び出され、そのストリームが閉じられなかった後にfopenを呼び出しても大丈夫ですか?ありがとうございました

4

1 に答える 1

0

あなたのコードは安全に見えます。プロセス内で同じファイルを複数回開くことができます。ファイル記述子は相互作用しません。

あなたのように標準出力を再開することは避けたいと思います。このプログラム全体を単一の fopen で実行して、作成中の混乱を避けることができます: fprintf を調べてください!

于 2011-08-27T08:53:05.847 に答える