以下C程序不会在屏幕上打印任何内容。
我使用gcc
编译了程序:
#include<stdio.h>
main()
{
printf("hai");
for(;;);
}
答案 0 :(得分:9)
最有可能的是,stdout
是行缓冲的。您的程序不会调用fflush
或发送换行符,因此缓冲区不会被写出来。
#include <stdio.h>
int main(void) {
printf("hai\n");
for(;;)
;
return 0;
}
另请参阅question 12.4中的What's the correct declaration of main()?和C FAQ。
答案 1 :(得分:4)
这是由stdio中发生的缓冲引起的(即除非你通过包含\ n或fflush告诉它,否则不会立即输出)。请参阅解释此问题的Write to stdout and printf output not interleaved。
(p.s。或者编译器对#include中的拼写错误不满意)
答案 2 :(得分:3)
默认情况下,标准输出往往是行缓冲,因此您没有看到任何内容的原因是因为您没有刷新该行。
这将有效:
#include <stdio.h>
int main (int argC, char *argV[])
{
printf("hai\n");
for(;;)
;
return 0;
}
或者,您可以fflush
标准输出或者只是摆脱无限循环以便程序退出:
#include <stdio.h>
int main (int argC, char *argV[])
{
printf("hai");
return 0;
}
但是你可能还想要换行。
答案 3 :(得分:2)
您的for(;;)循环停止刷新流。正如其他人所建议的那样,在输出的字符串中添加换行符,或者明确刷新流:
fflush( stdout );
在你的printf之后。并更正#include的拼写。