一个非常简单的程序甚至无法正常工作。
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是没有人选择的,因为你无法弄清楚它为什么会以不应该的方式运行
答案 0 :(得分:3)
2名候选人
您的终端I / O打开了不需要的本地回声。因此是OS问题,而不是该程序的问题。
在;
结束时遗失while()
会调用预期结果。发布的代码应该简单读取一些输入,然后立即退出。这不是OP的重述。怀疑这是对问题的错误转录
[edit]现在查看@alk解决方案的所有。当然,由于混合\r
和\r\n
以及\n
混合// Was it a typo that the OP did not have a
和at 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