4

このコードセグメントでは、scanfが2回要求していますが、何が原因でそうなるのかわかりません。

int t;
for(t = 0;t<5;t++)
{
    //scanf requests twice for some reason
    scanf("%s ",input);
    fprintf(fp,"%s ", input);
    printf("%d Word(s)\n", (t+2));
}

出力は次のとおりです(引用符で囲まれた単語はユーザーが入力します)

"hello"
"world"
1 Word(s)
"how"
2 Word(s)
"are"
3 Word(s)
"you"
4 Word(s)
"lostword"
5 Word(s)

"hello world how are you "

私に返され、ファイルに保存されます。

4

1 に答える 1

5

scanfの空白を削除します。

変化する:

scanf("%s ",input);

に:

scanf("%s",input);

スペースが原因で、scanfは空白ではないものを読み取るまで(の1つの文字列を読み取った後%s)、空白文字をスキップし続けます。

于 2012-12-13T22:50:00.753 に答える