2017-02-25 27 views
0
int main(){ 
    char students[20][20]={ 
     "Ehtisham Hassan", 
     "Arbab Mushtaq", 
     "M Yaseen Ayub", 
     "Qamar Farooq", 
     "Muhammad Muneeb" 
    }; 
    char isPresent; 

    for(int b=0; b<5; b++){ 

     printf("%s\n",students[b]); 
     scanf("%c\n",&isPresent); 

    } 

    return 0; 
} 

私のコードで行う必要があるのは、生徒配列から1人の生徒の名前を印刷して文字を入力するのを待つことですが、1人の生徒の名前が印刷され、ループが2回目に実行されると、2人の生徒の名前が出力され、次にチャー入力を待ちます。なぜこのようなことが起こるのか誰にでも教えてくださいここで文字入力とループinC?

は私のプログラムの出力です:

Ehtisham Hassan 
a 
Arbab Mushtaq 
M Yaseen Ayub 
a 
Qamar Farooq 
Muhammad Muneeb 
a 

予想される出力:

Ehtisham Hassan 
a 
Arbab Mushtaq 
a 
M Yaseen Ayub 
a 
Qamar Farooq 
a 
Muhammad Muneeb 
a 
+0

注意深く** scanf' **のドキュメントを読んでください。 – Olaf

答えて

1

使用

scanf(" %c",&isPresent); 
     ^^ 
     white space and removed '\n` 

代わりの

scanf("%c\n",&isPresent); 

これはFAQの質問を参照してください。

+1

ありがとうございました非常に多く...それは働いた。これら2つのステートメントの違いを教えてください。白いスペースは重要ですか?なぜ空白なしで動作しないのですか? –