2015-08-22 18 views
0

連接嗨是我用一個簡單的代碼:while語句只執行兩次代碼做::塊和開發的C++

#include <stdio.h> 

void main() 
{char choice; 
    do 
    { 
     printf("\nHello World"); 
     printf("\nDo you wish to continue:\n"); 
     choice = getchar(); 
    } 
    while(choice=='y'); 
} 

在執行我得到下面的輸出:

Hello World 
Do you wish to continue 
y 

Hello World 
Do you wish to continue 
--------------------End of Program-------------------- 

正如您會注意到的, getchar()函數在第二次迭代中不起作用。 更重要的是,程序並沒有等待我在第二次迭代中輸入「選擇」。

什麼問題?

+0

添加到其他人所說,'C'建議立即進行刪除d是一個'int'。 –

回答

0

您在y後按'enter',然後爲下一個getchar(),輸入作爲輸入。您可以刷新或使用兩個getchar,並只考慮第一個輸入 例如:c = getchar(); d = getchar();

在同時

1

的「Enter」鍵,你會按第一個輸入停留在緩衝區後,讀下一個時間控制達到getchar()爲C檢。 爲了避免它,你可以在你的第一個之後使用另一個getchar(),這將吸收輸入的換行符。或input.So程序終止,你可以使用它作爲第二本

if(c != '\n') c=getchar();

1

進入y後您按enter鍵作爲第二選擇是不y但其\n ..你可以使用這個

do 
{ 
    printf("\nHello World"); 
    printf("\nDo you wish to continue:\n"); 
    choice = getchar(); 
    getchar(); 
} 

第二的getchar()自動進行\n作爲輸入,並跳過它