扫描程序在NetBeans中无法正常运行的程序

我今天安装了NetBeans 7.0.1当我尝试用“scanf”执行C程序时,它会给出奇怪的错误

这就是我写的:

程序

它一直运行,直到我在输出控制台中输入内容。 在此处输入图像描述

输入后显示printf语句并显示“RUN FAILED”

在此处输入图像描述

任何人都可以告诉我该怎么做才能做到这一点?

您的printf没有被刷新,因此在程序结束之前它不会显示。

您没有显式返回main()中的值,因此返回scanf()的结果,该值为1,被解释为程序失败。

是的,我遇到了同样的问题,答案中的解决方案无法在我的机器上运行。 搜索后,我明白这个问题是关于Netbean的内部终端/控制台部分。 内部控制台无法运行scanffunction。 因此,请为您的项目使用外部终端。 去做这个:

  • 首先右键单击您的项目,然后选择属性。
  • 在该窗口中,选择底部的“运行”选项卡。
  • 在那里,有“控制台类型”,将此控制台类型从“内部终端”更改为“外部终端”。

就这些。

你需要在main的末尾返回0,如果不是假设有错误。

您没有返回0 ,表示已成功终止操作系统,并且您没有在printf上放置尾随\n导致该行无法打印(stdin被缓冲):

 #include  int main() { int n; printf("Enter the number:\n"); scanf("%d", &n); return 0; } 

没有返回值的AC程序将导致未定义的行为(一致被认为是坏事©)。 允许编译器自由地返回它返回的内容,它似乎返回scanf()的结果,但它可能为所有C标准关注返回一些大气熵。

至于不打印的行,那是因为你在缓冲终端上使用printf(),你最后要添加\ n。 这样做的原因可以追溯到古老的Unix方式,这些方式早已被除了最伟大的Unix大师之外的所有人所遗忘。

至于你输入内容之前什么也没发生,那是因为scanf()阻塞直到收到输入,以防你还没知道。 可以使用非阻塞IO调用,但我不确定这是否在您的问题范围内。 (请定义“使此正确”)。

添加返回码。 main()返回一个int,所以add return 0;main()函数的底部。 现在,返回的值是垃圾,通常除0以外的任何值都表示失败。

另外,您可以考虑制作它:

 int main(void) 

更明确(虽然这里不会改变任何东西)。