使用while循环计算输入量。C
作为程序的开始,我使用使用while循环计算输入量。C,c,loops,while-loop,eof,C,Loops,While Loop,Eof,作为程序的开始,我使用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)); pri
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);
}
#包括
main()
{
int n=0;
printf(“输入值。\n”);
做{
n++;
}
而(EOF!=scanf(“%d”、&n));
printf(“%d\n”,n);
}
如果我编译程序并运行它,然后输入1,然后按enter键并输入Ctrl+D,它会显示n=2
。为什么会这样?我只输入了1个值
n++
<代码>n变为1scanf(“%d”和&n)
被执行。读取输入1
n++
<代码>n变为2scanf(“%d”和&n)
被执行。它返回EOF
并从循环中断while
语句而不是do
语句。另外,不要用scanf()
破坏计数器
#包括
内部主(空)
{
int n=0,m;
printf(“输入值。\n”);
而(1==scanf(“%d”、&m))
{
n++;
}
printf(“%d\n”,n);
返回0;
}
因为它是do..while循环<代码>n++将在读取Ctrl+D之前执行。最简单的解决方案,更改为while循环
#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;
}