почему fprintf () не записывает в файл? - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь получить некоторый текст, введенный с консоли, записанный в файл с именем «output.txt» со следующим кодом ..

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

int main()
{
  printf("write something\n");
  char c;

  FILE *output=fopen("output.txt","w");

  if(!output)
    {
      printf("couldn't open file\n");
      return 1;
    }

  while(c=getchar())
    fprintf(output,"%c",c);

    fclose(output);

}

, но файл «output.txt» не содержит текстакогда я открою это.Почему это происходит?Вся помощь высоко ценится.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вы, вероятно, хотите что-то вроде этого:

  ...
  while ((c = getchar()) != 'X')
    fprintf(output, "%c", c);

  fclose(output);
  ...

Ввод:

ABCX Ввод

Output.txt будет содержать ABC.

0 голосов
/ 22 февраля 2019

Поскольку у вас нет правильного условия выхода в цикле, единственный способ завершить вашу программу - принудительно завершить процесс.Это означает, что нет никакой гарантии, что любой ожидающий буферизованный вывод будет записан в поток output.

. Что вы можете сделать, это изменить условие цикла на while((c = getchar()) != EOF).Затем вы можете использовать символы Ctrl + Z (Windows) или Ctrl + D (* nix), чтобы выполнить условие циклаfalse, достигнув строки fclose(output), которая очистит буфер и закроет файл.

Кроме того, сделайте c int, поскольку именно это EOF.

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