问题解决:printf()函数无法打印

今天写聊天室项目,调试出了问题,查看了代码无法找到问题,于是用printf()逐行打印。

问题定位很快,然而发现打印到一半,就无法显示。进过排查,这不是程序的问题,而是printf()函数无法打印。

这个问题涉及到printf()输出缓冲的问题。

对于标准输出设备stdout,输出一般都有缓冲,当遇到刷新标志或缓冲满时才把缓冲的数据输出到标准输出设备中。

对于printf()函数,其使用的输出设备就是标准输出设备stdout,且采用行缓冲式的输出,当printf()遇到\n时,或者缓冲区满时,才会将缓冲区里的内容刷新到标准输出(stdout).

为了解决这个问题,可以通过:fflush(stdout);解决,即:

printf("qqqqqqqqq");
   fflush(stdout);


fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准]
fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上

printf("。。。。。。。。。。。");后面加fflush(stdout);可提高打印效率


你可能感兴趣的:(linux网络聊天室)