您的位置:首页 > 编程语言

关于sprintf整合%d出错的问题

2017-03-20 16:07 169 查看

有些编译器用到sprintf函数整合%d类型的数据时候可能会出错例如

错误的示例

char *p[80]=0;
memset(p,0,sizeof(p));
sprintf((char *)p,"AT+CIPSTART=\"TCP\",\"%d.%d.%d.%d\",%d\r\n",210,209,82,119,8080);
PrintString1(p);


输出的值为 : AT+CIPSTART=”TCP”,”-11567.21111.8080.0”,53

这是因为某些编译器不知道需要整合的数是什么类型导致的 所以需要加上强制转换类型才可以输出我们需要的答案

正确的方法

char *p[80]=0;
memset(p,0,sizeof(p));
sprintf((char *)p,"AT+CIPSTART=\"TCP\",\"%d.%d.%d.%d\",%d\r\n",(int)210,(int)209,(int)82,(int)119,(int)8080);
PrintString1(p);


此时输出的是 :AT+CIPSTART=”TCP”,”210.209.82.119”,8080
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  代码