手揣网教程/系统工具/内容

Linux C printf()打印输出显示不及时以及处理办法

系统工具2024-11-04 阅读
[摘要]在linux系统下开发, 你可能会遇到这样的情况,使用printf() 函数时,打印输出显示不像预料那样立马输出,也就是是输出不及时。导致这个问题的原因是,printf函数是行缓冲式的输出,当pri...
在linux系统下开发, 你可能会遇到这样的情况,使用printf() 函数时,打印输出显示不像预料那样立马输出,也就是是输出不及时。导致这个问题的原因是,printf函数是行缓冲式的输出,当printf遇到"\n" 时,或者缓冲区满时,才会将缓冲区里的内容刷新到标准输出(stdout).
因此, printf("p"); 语句的显示不能立刻显示在屏幕上.
 
在此提供3个解决方法:
1.加上"\n",即:
printf("p\n");
或者
printf("p");
printf("\n");
 
2.强制刷新缓冲区,缓冲区的数据会被输出到屏幕上,即:
printf("p");
fflush(stdout);
 
3.把缓冲区大小设置为NULL,关闭缓冲区,即:
setbuf(stdout, NULL);
printf("p");
 
并附上测试代码:
#include
#include
int main()
{
printf("Hello, world!\n");
printf("ABC");
printf("DEF");
sleep(5);
printf("GHI\n");
printf("JKL");
sleep(5);
fflush(stdout);
printf("MNO");
sleep(5);
printf("PQR");
setbuf(stdout, NULL);
printf("STU");
sleep(5);
printf("VWX");
sleep(5);
printf("END");
return 0;
}
 
这里只是个人所见,如有错误,敬请指正。也希望各路大神指点一二,把更多的知识分享给大家。

Linux是一套免费使用和自由传播的类Unix操作系统

……

相关阅读