2015-08-22 19 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作为输入,并跳过它