1

一个非常简单的程序甚至不工作。

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 不是任何人的选择,因为你无法弄清楚为什么它的行为方式不应该

4

3 回答 3

3

2名候选人

  1. 您的终端 I/O 开启了不需要的本地回显。因此是操作系统问题,而不是该程序的问题。

  2. ;在调用结束时缺少while()预期的结果。发布的代码应该简单地读取一些输入,然后立即退出。这不是 OP 叙述的那样。怀疑是问题的错误转录。
    [编辑] 现在查看所有@alk 解决方案。当然,在 OP 的真实代码中有些东西在帖子中不可见 - 可能是由于混合\rand\r\n\n

    // Was it a typo that the OP did not have a;at the end?
    while (scanf("%d", &n) > 0)

于 2013-09-28T16:33:26.907 回答
-1

很可能您的代码如下所示:

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

// ------------------------------------------------------------------ scroll right >>> --------------------------------------------------
于 2013-09-28T15:54:45.950 回答
-7

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

您可以将其检查为 ref- http://cboard.cprogramming.com/c-programming/119407-scanf-return-values.html

于 2013-09-28T15:51:34.950 回答