Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4027064
  • 博文数量: 366
  • 博客积分: 9916
  • 博客等级: 中将
  • 技术积分: 7195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-29 23:27
个人简介

简单!

文章分类

全部博文(366)

文章存档

2013年(51)

2012年(269)

2011年(46)

分类: C/C++

2012-02-08 18:36:21

      使用sprintf或者printf时,可变参数中如果使用了两个以上的函数,则可能出现内存覆盖的情况(可能是可变参数的执行顺序不确定引起)。

       以下是我使用sprintf后,遇到的状况,printf测试也一样,还没有找到产生该状况的原因。
sprintf(cmd, "route add -host %s gw %s", (char *)inet_ntoa(*((struct in_addr *)¶ms->server_ip)),(char *)inet_ntoa(params->gateway));//执行该部分不能得到所需的结果

后来采用以下方式:
    unsigned char *pip = (unsigned char *)¶ms->server_ip;
    sprintf(cmd, "route add -host %d.%d.%d.%d gw %s", pip[0],pip[1],pip[2],pip[3],(char *)inet_ntoa(params->gateway));
阅读(1105) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~