2017-07-03 9 views
3

私はプログラミングの初心者です。なぜこのループが正しく動作していないのかを知りたいだけです。なぜこのループは4回だけ実行されますか?

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int i; 
    char x[8]; 
    char t; 

    for (i = 0; i < 8; i++) { 
     scanf("%c", &t); 
     x[i] = t; 
    } 
    return 0; 
} 
+4

8を実行します。空白も文字です。 – StoryTeller

+3

@StoryTeller:8は実行ファイルではありません! ;-) – alk

+2

'scanf("%c "、&t);'の代わりに 'scanf("%c "、&t);'。 – rsp

答えて

1

これは8回実行されます。 提出するためにEnterキーを押すたびに、ループ反復の1つを消費している空白文字を入力しています。

+1

解決策はいいと思うのですか? –

+1

質問はなぜ修正するのかを尋ねたところではありませんが、実際のデバッガを使用することは価値がありました。コメントはそれが宿題/宿題であることを示唆しています –

+0

それはなぜ迷惑にならないのならば答えますか? – StoryTeller

3

キーボードからの入力がある場合、入力の完了を確認するにはEnterキーを押す必要があるためです。これはバッファーに残り、次の入力がcharまたはstringの場合、ストアはstringまたはchar varに入力し、そのcharまたはstringの入力を待つことはありません。この場合、実行時に与えられた最初の入力はcharをX [0]に格納し、x [1]などと入力します。ループ8の時間を実行しますが、入力に4回しか尋ねないので、4回と思われます。これをチェックするには、printfをループに入れてください。

+0

ありがとう@ user8246589。 –

関連する問題