作为我的程序的开头,我使用do-while
循环来计算用户输入的输入数量。 do-while
循环应在输入EOF
(Ctrl + D)后结束。
但问题是,当我输入1个值然后按Ctrl + D时,我的程序说它已经计算了两个输入,当我希望它只有一个时。
#include <stdio.h>
main()
{
int n=0;
printf("Enter values.\n");
do {
n++;
}
while (EOF!=scanf("%d",&n));
printf("%d\n",n);
}
如果我编译程序并运行它,然后输入1,则按Enter键,然后输入Ctrl + D,它会显示n=2
。为什么是这样?我只输了1个值。
答案 0 :(得分:2)
n++
已执行。 n
变为1。scanf("%d",&n)
已执行。读取输入1
。n++
已执行。 n
变为2。scanf("%d",&n)
已执行。它返回EOF
并从循环中断开。结果,结果变为2.我认为在这种情况下你应该while
语句而不是do
语句。另外,请勿使用scanf()
打破计数器。
#include <stdio.h>
int main(void)
{
int n=0, m;
printf("Enter values.\n");
while (1==scanf("%d", &m))
{
n++;
}
printf("%d\n",n);
return 0;
}