今天写聊天室项目,调试出了问题,查看了代码无法找到问题,于是用printf()逐行打印。
问题定位很快,然而发现打印到一半,就无法显示。进过排查,这不是程序的问题,而是printf()函数无法打印。
这个问题涉及到printf()输出缓冲的问题。
对于标准输出设备stdout,输出一般都有缓冲,当遇到刷新标志或缓冲满时才把缓冲的数据输出到标准输出设备中。
对于printf()函数,其使用的输出设备就是标准输出设备stdout,且采用行缓冲式的输出,当printf()遇到\n时,或者缓冲区满时,才会将缓冲区里的内容刷新到标准输出(stdout).
为了解决这个问题,可以通过:fflush(stdout);解决,即:
- printf("qqqqqqqqq");
- fflush(stdout);
printf("qqqqqqqqq");
fflush(stdout);
fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上
printf("。。。。。。。。。。。");后面加fflush(stdout);可提高打印效率
转自:http://blog.youkuaiyun.com/yhj110911119/article/details/52196540