首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

linux编程中printf打印遇到\n后,后面的打印都没有了,该如何处理

2012-06-12 
linux编程中printf打印遇到\n后,后面的打印都没有了源程序是这样:#includestdio.h#includestdlib.hint

linux编程中printf打印遇到\n后,后面的打印都没有了
源程序是这样:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  int ret = 0;
  ret=system("ifconfig | grep eth7");
  printf("ret=%d \n",ret);
  if (0 == ret)
  {
  printf("error");
  }
  printf("exit!!");
   
}
函数执行结果发现:
eth7 Link encap:Ethernet HWaddr 00:0c:29:0e:30:e1  
ret=0 
后面的error和exit都打印不出来了。
求高人解答!

[解决办法]
楼主,我刚试了下,运行正常

至于你机子出问题,也在情理之中。出问题原因就是 system()会调用fork()产生子进程,在创建了fork子进程执行ipconfig命令时,因为存在部分时间运算处理,导致了子进程跟父进程数据处理不同步.同时,ret实际得到直并非0,只不过前一次输出强制转换为0,在后面比较运算中,进程发生错误,直接exit退出


[解决办法]
正常的阿,楼主是不是看漏了
 if (0 == ret)
{
printf("error\n");
}
printf("exit!!\n");
试试
[解决办法]
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。

热点排行