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

时间:2012-02-02 17:28:59

标签: c netbeans scanf

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

这就是我写的:

Program

它一直运行,直到我在输出控制台中输入内容。 enter image description here

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

enter image description here

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

6 个答案:

答案 0 :(得分:9)

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

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

就是这样。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

如果没有,则需要在main的末尾返回0。

答案 3 :(得分:0)

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

#include <stdio.h>

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

答案 4 :(得分:0)

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

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

至于输入内容之前没有发生任何事情,那是因为scanf()阻塞直到收到输入,以防你还没有意识到这一点。可以使用非阻塞IO调用,但我不确定这是否在您的问题范围内。 (请定义“使这个正确”)。

答案 5 :(得分:-1)

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

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

int main(void)

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