【发布时间】:2014-06-21 18:17:16
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,N;
for(i=0;i<5;i++)
{
printf("Enter The Number \n");
scanf("%d", &N);
printf("HELLO %d \n",N);
}
return 0;
}
当我在 NetBeans 中执行上述代码时,输出不会逐行执行,所有输出都一起执行,即当循环结束时...问题是 printf 和 scanf 不起作用
【问题讨论】:
-
您的代码看起来不错。您的 IDE 可能存在问题/设置问题。
-
您的确切输入和输出是什么?
-
@nIcEcOw。那是UB。然而,Windows 定义了它,afaik(但这个问题没有被标记为 Windows)。
-
@nIcEcOw; UB = 未定义行为:您不能在严格符合 C 标准的代码中执行此操作,该标准不允许刷新读取缓冲区。如果该软件应该仅在 Windows 机器上运行,您的建议可能是 OP 问题的解决方案(不过,我们对此知之甚少,因为 OP 不提供她提供的输入和她得到的输出)。但这不是可移植的(例如在大多数 Linux 机器上不起作用)。
-
您的问题很简单:Netbeans(重新)将 IO 定向到自身而不是控制台导致 C 运行时检测到没有连接的交互式设备,这意味着 STDIN 和 STDOUT 是默认缓冲的,而不是 line-缓冲或无缓冲。在 IDE 之外执行完全相同的程序不会有任何问题。解决方法:手动禁用缓冲或添加
fflush(STDOUT)-statements。