无法在RedHat中运行程序

时间:2011-04-28 15:07:53

标签: c linux redhat

我写了一些简单的程序

int main(){
              printf("hello word!");
              return 0;
}

我使用gcc -o hello hello.c编译它(没有错误) 但当我使用in terminal运行./hello时,我什么都没看到,为什么?提前谢谢

6 个答案:

答案 0 :(得分:7)

可能是缺少的换行符,因此输出会在下一个提示符处被破坏。

尝试:

printf("hello world\n");

此版本还使用了更传统的消息。

答案 1 :(得分:1)

将\ n添加到打印的字符串中,以便将输出缓冲区刷新到您的终端。

printf("hello world!\n");

此外,您应该包含stdio标头以避免隐式引用

#include <stdio.h>

答案 2 :(得分:0)

也许它确实会输出一条消息但是应用程序会立即终止并且您无法看到它。

显示消息后,调用一个读取下一个按键的功能,以防止应用程序终止,直到您按下某个键。

答案 3 :(得分:0)

包括stdio.h

#include <stdio.h>

并尝试刷新标准输出

fflush(stdout);

可能标准输出缓冲区尚未刷新。还要记住,如果C程序被中断,可能已成功调用某些printf,但缓冲区尚未刷新,因此您看不到任何内容。如果要确定已正确调用printf,请手动刷新输出。

答案 4 :(得分:0)

缺少#include <stdio.h>。您应该收到一条警告消息,例如:warning: incompatible implicit declaration of built-in function ‘printf’。然后,根据系统,你可以得到你想要的输出。

答案 5 :(得分:0)

C语言的规范声明文本流中的最后一行输出可能最后需要\n。该语言声明此要求是实现定义。这立即意味着,在一般情况下,如果程序的输出行到文本流的末尾没有\n,则不会定义程序的行为。

只有在谈论某些特定实现时才会定义行为。某些实现可能会产生输出。其他一些实现可能一无所获。而另一种实现可能会以其他方式表现。

对于您的具体实现(Linux上的GCC),我希望即使没有尾随\n也能看到输出。也许有关于你的shell /终端的设置方式,使其不可见。