2012-03-07 12 views
3
c='q'; 
while(c=='q') 
{ 
    printf("hello"); 
    scanf("%c",&c); 
} 

入力を取る理由は何もありません。scanfはループを早期終了させます

+0

質問はそれが本当に-5値するん些細ですが、私はあなたの質問 – badgerr

+1

を理解していませんか? – Joe

+4

+1と投票を再開するには、これはコミュニティからのばかげた行為であり、あなたはすべて恥ずかしいはずです。 –

答えて

1

私はユーザ入力が'q'で終了することを意味するとし、c == 'q'のときにループを終了させたいと仮定します。

試してみてください。

c='\0'; 
while(c !='q') 
{ 
    printf("hello"); 
    scanf("%c",&c); 
} 
+2

いつから空の文字を定義できますか? T.J.のように、 ''\ 0''または' do {...} while; 'ループを使うことを提案する。クラウダーの答え。 –

+0

@Platinum Azure whoops。それは私のことではなく馬鹿だった。そのキャッチをありがとう。 –

+0

私のコードで 'q'を入力してもループが壊れていると言っています...クリアしてください。 –

6

ループが理由なく終了しません。 scanfコールでは、stdinから文字が読み込まれ、cに格納され、cの値が変更されます。ループ状態がテストされるとき、恐らくcはもはや=='q'ではなくなります(例えば、あなたは "q"以外の何かをタイプしました)。

ユーザーまでループしようとしている場合はないタイプ「Q」ん:ユーザーが入力するまで、scanf

do { 
    printf("hello"); 
    scanf("%c", &c); 
} 
while (c != 'q'); 

しかし、ほとんどのコンソールシステム上のことに注意返しませんフルテキスト行を入力し、Enterキーを押します。キーバイキー入力を行う場合は、おそらく別の機能を見たいと思うでしょう。

関連する問題