2011-12-24 4 views
2

私はおそらく何かが分かりませんが、ファイルに書き込むたびに、入力したテキストはドキュメントを開くと2行目に表示されます。これを引き起こしているのは何ですか?ファイルへの書き込みはどこから来ますか?

#include <stdio.h> 

int main() 
{ 
    char c; 
    char filename[100]; 
    FILE *fp; 

    printf("Type the name of the file to write to followed by enter: \n\n"); 

    scanf("%[^\t\n]s", filename); 

    fp = fopen(filename, "w"); 

    printf("\n\nEnter the text you wish to write to this file: \n\n"); 

    while ((c = getchar()) != EOF) 
    { 
     putc(c, fp); 
    } 

    return 0; 
} 

答えて

4

は、あなたはscanfはどんな\n文字を食べないように言われましたので、まだあなたがputcgetcharでループを開始するときに入力バッファに座っ1が存在します。

一つの解決策は、\nを食べるためにputcgetcharへの呼び出しでループの前になります。

+0

を使用? – bqui56

+0

@ stariz77:申し訳ありませんが、それはタイプミスでした。私は 'getchar'を意味しました。 –

0

scanf'\n'(または'\t')を消費しなかったためです。

タブでファイル名を指定してください:"filename<TAB>first line<ENTER>" :)


ENTERを取り除くために、\ n個を削除するPUTC呼び出しの引数であるもの

while ((ch = getchar()) != '\n' && ch != EOF) /* void */; 
if (ch == EOF) /* no more input; abort or whatever */; 
関連する問題