2017-02-25 81 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; 
} 

我希望自己的代碼是從學生數組中打印一個學生的名字,然後等待用戶輸入一個字符,但它所做的是打印一名學生的名字,然後存儲一個字符然後當循環第二次運行時,它會打印兩個學生的名字,然後等待字符輸入。誰能說出爲什麼會發生這種情況帶循環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

非常感謝你......它的工作。你能告訴我這兩種說法有什麼不同嗎?空白空間很重要嗎?爲什麼沒有空白就無法工作。 –