Я пытаюсь скопировать один текстовый файл в другой с помощью - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь скопировать один тестовый файл в другой на C. Однако мой код не работает, программа работает нормально и выдает файл CircleCode_temp, но в текстовом файле ничего нет.Любые идеи, почему это не работает

   #include <stdio.h>
   #include <stdlib.h>

   char c; 

  int main(int argc, char **argv)
  {

  FILE *orginalFile = fopen("CircleCode1", "r");
  FILE *newFile = fopen("CircleCode_temp", "w");


    if (orginalFile == NULL | newFile == NULL)
     {
       printf("Cannot open file");
       exit(0);
     }


      while((c = fgetc(orginalFile))!=EOF)
      {
         fputc(c,newFile);
         c = fgetc(orginalFile);
       }


      fclose(orginalFile);
      fclose(newFile);

     return 0;
   }

1 Ответ

0 голосов
/ 12 декабря 2018
  while((c = fgetc(orginalFile))!=EOF)
  {
     fputc(c,newFile);
     c = fgetc(orginalFile);
   }

Здесь две ошибки:

  1. Вы дважды вызываете fgetc в цикле, который выбрасывает все остальные символы.

  2. Вы сравниваете c с EOF.Вы должны сравнить возвращаемое значение fgetc с EOF.Если вы думаете, что они одинаковы, помните, что c имеет тип char, а fgetc возвращает int.

Также:

    if (orginalFile == NULL | newFile == NULL)

Одна ошибка здесь.У вас есть |, который является побитовым ИЛИ, но вы хотите ||, который является логическим ИЛИ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...