使用while循环计算输入量。 C

时间:2015-11-26 15:52:43

标签: 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));


printf("%d\n",n);

}

如果我编译程序并运行它,然后输入1,则按Enter键,然后输入Ctrl + D,它会显示n=2。为什么是这样?我只输了1个值。

1 个答案:

答案 0 :(得分:2)

  1. n++已执行。 n变为1。
  2. scanf("%d",&n)已执行。读取输入1
  3. n++已执行。 n变为2。
  4. scanf("%d",&n)已执行。它返回EOF并从循环中断开。
  5. 结果,结果变为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;
    }