见鬼的printf函数!

牧牛童子 2014-11-24 02:14:27
如图所示,两个printf函数相临紧挨一起; 一个执行,另一个不执行;
图片左边是代码,右边是GCC后执行结果。
第一个printf打印字符串执行完后,
第二个printf("==========Flag==========\n") 居然不是同步有结果输出。呈现有时执行有时不执行的效果。

何故?

(补充一下:花括号的位置和数量,都正确。第二个printf下就是右花括号,else { } 的)
...全文
206 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛童子 2014-11-25
  • 打赏
  • 举报
回复
谢谢各位,问题已经解决了。 我这数据是从串口接收来的,是串口发来的数据格式引起的。(尝试出来的)
li4c 2014-11-24
  • 打赏
  • 举报
回复
#10正解
杨六 2014-11-24
  • 打赏
  • 举报
回复
没太看明白,是换行输出的原因?
max_min_ 2014-11-24
  • 打赏
  • 举报
回复
printf ("%s\n", str_GNGGA);
FancyMouse 2014-11-24
  • 打赏
  • 举报
回复
目测楼主只是需要加一个fflush(stdout);
mymtom 2014-11-24
  • 打赏
  • 举报
回复
我看不到图啊
  • 打赏
  • 举报
回复
你要爬先确定buff中的字符串 是否是只有一组数据? 把buff 打印出来就知道怎么回事了
starytx 2014-11-24
  • 打赏
  • 举报
回复
看下msgstr_add每次的值是什么?是不是没有结束符或者有时候是空串
熊熊大叔 2014-11-24
  • 打赏
  • 举报
回复
还有其他线程在运行吧
luciferisnotsatan 2014-11-24
  • 打赏
  • 举报
回复
msgstr_add 没有'\0'结束符,导致printf越界了?
xionggch 2014-11-24
  • 打赏
  • 举报
回复
查下是不是有什么地方内存溢出
mymtom 2014-11-24
  • 打赏
  • 举报
回复
没看懂楼主的意思
牧牛童子 2014-11-24
  • 打赏
  • 举报
回复
原本是想执行 strncpy(str_GNGGA,msgstr_add,8); 这一句。 结果printf ("%s", str_GNGGA);就出现上述结果,也就是不是第一个PRINTF语句同步。 才用PRINTF("====")测试。结果同样。 在MAC下,用gcc main.c -o kk 编译。
图灵狗 2014-11-24
  • 打赏
  • 举报
回复
printf函数它是把数据先放到输出缓冲区的,当缓冲区满或者是遇到换行符(\n)或者是强制刷新(fflush)才会真正输出到设备上。
引用 楼主 mini_peng 的回复:
如图所示,两个printf函数相临紧挨一起; 一个执行,另一个不执行; 图片左边是代码,右边是GCC后执行结果。 第一个printf打印字符串执行完后, 第二个printf("==========Flag==========\n") 居然不是同步有结果输出。呈现有时执行有时不执行的效果。 何故? (补充一下:花括号的位置和数量,都正确。第二个printf下就是右花括号,else { } 的)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧