我写了一些简单的程序
int main(){ printf("hello word!"); return 0; }
我编译它使用gcc -o hello hello.c
(没有错误),但是当我in terminal
使用./hello
运行它时in terminal
我什么都看不到,为什么? 提前致谢
可能是缺少的换行符,这样输出就会被下一个提示所打乱。
尝试:
printf("hello world\n");
这个版本也使用更传统的信息。
将\ n添加到您的打印字符串,以便输出缓冲区被刷新到您的终端。
printf("hello world!\n");
此外,你应该包括stdio标题,以避免隐式引用
#include <stdio.h>
也许它会输出一个消息,但是这个应用程序立即终止,你无法看到它。
显示消息后,调用一个读取下一个按键的函数,以防止应用程序终止,直到您按下一个键。
包括stdio.h
#include <stdio.h>
并尝试刷新标准输出
fflush(stdout);
也许标准输出缓冲区没有被刷新。 还要记住,如果一个C程序被中断,可能有一些printf被调用成功,但是缓冲区没有被刷新,所以你什么都看不到。 如果您想确定printf已被正确调用,请手动刷新输出。
#include <stdio.h>
缺失。 您应该收到警告消息,如: warning: incompatible implicit declaration of built-in function 'printf'
。 然后根据系统,你可以得到或不是你想要的输出。
C语言的规范指出,文本流中输出的最后一行可能在最后需要\n
。 该语言指出这个要求是实现定义的 。 这立即意味着在一般情况下,如果程序的行输出到文本流最后没有\n
,那么程序的行为就不会被定义。
行为只有在你谈论某个特定的实现时才会被定义。 有些实现可能会产生输出。 其他一些实现可能什么都不产生 而另一个实现可能会以其他方式表现。
对于你的具体实现(Linux上的GCC),我希望看到输出,即使没有结尾\n
。 也许有一些关于你的外壳/终端设置的方式,使其不可见。