C / C ++ потоки и файлы - PullRequest
       40

C / C ++ потоки и файлы

0 голосов
/ 27 августа 2011

У меня есть следующий код:

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);
}

Сохраняется ли этот код? Я имею в виду, можно ли вызывать fopen после вызова freopen и его поток не был закрыт? Спасибо

1 Ответ

0 голосов
/ 27 августа 2011

Ваш код выглядит безопасным.Вам разрешено открывать один и тот же файл более одного раза в процессе.Дескрипторы файлов не будут взаимодействовать.

Я бы держался подальше от повторного открытия стандартного вывода, как вы.Вы можете сделать всю эту программу с одним fopen и избежать беспорядка, который вы создаете: ищите fprintf!

...