Printf在linux下无法打印情况解决方法
关于qtcreator调试控制台程序使用printf打印不显示问题,主要原因是缓存原因,有全缓冲,行缓冲,无缓冲,如无特殊操作(fflush(stdout))全缓冲只有达到当前缓冲区大小才会输出,行缓冲则会在接受到\n换行符时输出,无缓冲则是有什么输出什么,网上看到关于该问题的解决方法都是调用fflush进行刷新,这种对于有较多地方那个需要打印比较麻烦,所以根据原理在main函数入口设置标准输出为
·
今天工作过程中在使用qtcreator进行编译的工程中,遇到printf无法打印,但是在动态库中的printf却可以正确打印的问题,目前还不是很清楚,printf的使用方法没有问题,也添加了\n,但是还是无法打印。经过测试一下方法可以解该问题:
关于qtcreator调试控制台程序使用printf打印不显示问题,主要原因是缓存原因,有全缓冲,行缓冲,无缓冲,如无特殊操作(fflush(stdout))全缓冲只有达到当前缓冲区大小才会输出,行缓冲则会在接受到\n换行符时输出,无缓冲则是有什么输出什么,网上看到关于该问题的解决方法都是调用fflush进行刷新,这种对于有较多地方那个需要打印比较麻烦,所以根据原理在main函数入口设置标准输出为行缓冲或者无缓冲这样就是实时打印信息了(标准错误一样)
#include<stdio.h>
int main()
{
//方法一
setbuf(stdout,NULL);
//方法二
//设置行缓冲需要用到另外一个函数
//_IOFBF 全缓冲
//_IOLBF 行缓冲
//_IONBF 无缓冲
//setvbuf(stdout,NULL,_IONBF,0);
return 0;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)