Как прочитать несколько строк ввода от пользователя, используя fgets и записать его в файл, используя fputs в C? - PullRequest
1 голос
/ 16 ноября 2011

Я хотел прочитать ввод от пользователя (несколько строк) и записать его в файл, используя fputs ().

Вот мой код

#include<stdio.h>
#include<stdlib.h>
int main()
{
 FILE *fp;
 char s[25];
 fp=fopen("myname","w");
 if(fp==NULL)
 {
  perror("Error opening file\n");
  exit(1);
 }

 while(fgets(s,25,stdin)!=NULL)
  fputs(s,fp);
 fclose(fp);
 return 0;
}

После получения ввода от пользователяЯ использую Ctrl + C, чтобы закрыть окно ввода программы (я использую Linux).Затем, если я открою файл, он ничего не содержит.Как я могу решить эту проблему?

Что-то не так с использованием fputs () & fgets ()?

1 Ответ

3 голосов
/ 16 ноября 2011

Поскольку C-C, вероятно, убивает процесс, из-за буферизации строки не попадут в файл (если их не много и они не заполнят буфер).

Вы должны завершить вывод C-D (Unix) или C-Z (Dos), а не C-C.

В качестве примечания: fgets не удаляет символ новой строки и fputsдобавляет свое.Но я думаю, вы заметили, что: -)

...