我有这个代码:

char c;
do
{
    scanf("%c",&c);
    printf("coucou\n");
} while (c!='q');


这是我的结果:

输入:

M


输出:

coucou
coucou


为什么每次都打印两次“ coucou”?

最佳答案

该循环执行2次,因为scanf扫描2个字符,一个扫描M,另一个扫描\n新行字符。

您可以通过在循环中添加条件来轻松解决此问题:

do
{
  if(getchar() != '\n')
    printf("coucou\n");
} while (c!='q');

09-30 21:53