c - Do-while 循环 scanf 在读取单个字符时读取循环两次而不是一次
问题描述
我有这个代码:
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');