为什么scanf在Nios 2 IDE中打印输入?

时间:2013-09-28 15:48:27

标签: c nios

一个非常简单的程序甚至无法正常工作。

int main ()
{
  int  n; 
  while (scanf("%d", &n) > 0)
  return 0;
}

以上我希望只读取输入,但它也打印输入:

2
2
3
3

如果我在while循环中也有这一行,我会预料到上述行为,但我不这样做:

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

你能解释一下吗?

更新

答案中没有任何内容可以解释为什么会发生这种情况。 Nios 2 IDE中没有用于打开或关闭本地回声的设置。如果有的话可能不会导致意外输出。此程序还打印其输入:

#include <stdio.h>

int main ()
{
  int  n; 
  while (scanf("%d", &n) > 0)
    ;
  return 0;
}

所以这个基于Eclipse的Nios 2 IDE是没有人选择的,因为你无法弄清楚它为什么会以不应该的方式运行

3 个答案:

答案 0 :(得分:3)

2名候选人

  1. 您的终端I / O打开了不需要的本地回声。因此是OS问题,而不是该程序的问题。

  2. ;结束时遗失while()会调用预期结果。发布的代码应该简单读取一些输入,然后立即退出。这不是OP的重述。怀疑这是对问题的错误转录 [edit]现在查看@alk解决方案的所有。当然,由于混合\r\r\n以及\n混合// Was it a typo that the OP did not have aat the end?,OP的真实代码中的某些内容在后期不可见?

    while (scanf("%d", &n) > 0); {{1}}
    {{1}}

答案 1 :(得分:-1)

很可能你的代码看起来像这样:

int main ()
{
  int  n; 
  while (scanf("%d", &n) > 0)                                                                                           printf("%d\n", n);
  return 0;
}

// ------------------------------------------------------------------ scroll right >>> --------------------------------------------------

答案 2 :(得分:-7)

scanf()返回整数,它是作为输入给出的参数数量。在您的情况下,scanf("%d",&n)会返回1.

您可以将此作为参考 http://cboard.cprogramming.com/c-programming/119407-scanf-return-values.html