2017-09-19 5 views
1

端末からファイルにコンテンツを書き込もうとしています。ファイルは作成中ですが、コンテンツはファイルに書き込まれません。Cでのこのファイル処理の問題は何ですか?

#include<stdio.h> 
    #include<stdlib.h> 
    #include<math.h> 
    int main(int argc, char *argv[]) 
    { 
     FILE *fp; 
     fp=fopen(argv[1],"w"); 
     char ch; 
     while((ch=getchar())!=EOF) 
     { 
      putc(ch,fp); 
     } 
     fclose(fp); 
     return 0; 
    } 
+1

追記:常に 'fopen'と' putc'含めて、I/O機能の戻り値を確認してください。 – user694733

+2

どのようにEOFを伝えますか? – user694733

+0

'putc()'を呼び出す直前に文字を表示するとどうなりますか? –

答えて

5

あなたがEOF(WindowsでははCtrl + ZとLinuxではCtrl + D)を合図していない場合、ループはそれがその信号を受信するまで実行を継続します。

プログラムの実行中に自分の目でファイルを読み込もうとすると、ファイルストリームは閉じず(fclose(fp);は実行されません)、ファイルは空に見えますファイルストリームが閉じると、コンテンツがあなたに表示されます。

1

次は正常に動作します:

#include<stdio.h> 
#include<stdlib.h> 
#include<math.h> 
int main(int argc, char *argv[]) 
{ 
    FILE *fp; 
    fp=fopen(argv[1],"w"); 
    char ch; 
    while(1) 
    { 
     ch = (char)getchar(); 
     putc(ch,fp); 
     if(ch == '.') break; 
    } 
    fclose(fp); 
    return 0; 
} 
関連する問題