LINUX下C语言连续的三个printf ,最后一个不执行,程序卡在那里,按ctrl+c继续执行。

2025-01-04 11:21:01
推荐回答(5个)
回答1:

最后一个printf("hello world")改为printf("hello world\n")或者添加一个fflush(stdout)把放在缓存区的“hello world” 刷出来就可以了!
注:在执行printf时,打印内容是放在缓存区的,只有遇到'\n',手动把缓存区的东西刷到屏幕上(fflush(stdout)),程序结束(ctrl+c)才能把打印内容显示到屏幕上。

回答2:

可以如一楼那样改,也可以把printf改为fprintf(stderr,"hello world");
printf可能有行缓冲,但stderr是无缓冲.

回答3:

这种情况的不能再常见了,加下fflush(stdout),如果在线程中你就要慎重使用这句可以把数据从缓冲区中刷出来的莫名其妙的东西。

回答4:

你把相关的变量声明贴出来啊,tmpsysyear,chTmpSYS_DATE,chTmpBrnoFlag_1
如果类型都对,感觉没啥问题,会不会是多线程引起的问题?

回答5:

你把
printf("\n日期chTmpSYS_DATE ===== [%s]\n",chTmpSYS_DATE);

执行两遍,看看能不能执行?