使用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));
阅读(1107) | 评论(0) | 转发(0) |