1

ユーザーからの入力(複数行)を読み取り、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()の使用法に何か問題がありますか?

4

1 に答える 1

3

バッファリングのためにプロセスを強制終了する可能性が高いためC-C、行はファイルに到達しません(行がたくさんあり、バッファがいっぱいにならない限り)。

C-Dではなく、 (Unix) またはC-Z(Dos) で出力を終了する必要がありC-Cます。

補足としてfgets、改行を削除せずfputs、独自の行を追加します。しかし、私はあなたがそれに気付くつもりだったと思います:-)

于 2011-11-16T06:04:32.287 に答える