Неверный вывод из файла

Я пытаюсь ввести некоторые данные в файл, а затем прочитать и распечатать его на консоли.

Вот мой код:

  fp=fopen("user1","w+");
  char line[1000];
  char *c;
  //write on file

  while(1)
  {
      fgets(line,sizeof(line),stdin);
      if(strcmp(line,":wq\n")==0)   //input ends when user enters :wq
          break;
      else
          fputs(line,fp);
  }
  //read from file
  fflush(stdin);

  while(1)
  {
      c=fgetc(fp);
      if(c==EOF)
          break;
      else
          printf("%ch",c);
   }

Я ввожу данные как

bjsa

: WQ

Выход:

 h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h  h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h 

В чем проблема?

1 ответ

Решение

Я вижу две проблемы

1) Ваш fgetc назначает на символ char. Это не правильно. Это должно быть Int

2) После записи файла, вы должны закрыть его, а затем открыть его для чтения

Что-то вроде:

  fp=fopen("user1","w+");
  char line[1000];
  int c;             // notice ......

  //write on file    
  while(1)
  {
      fgets(line,sizeof(line),stdin);
      if(strcmp(line,":wq\n")==0)   //input ends when user enters :wq
          break;
      fputs(line,fp);
  }
  fclose(fp);


  //read from file
  fp=fopen("user1","r");
  while(1)
  {
      c=fgetc(fp);
      if(c==EOF)
          break;
      printf("%ch",c);
  }
  fclose(fp);
Другие вопросы по тегам