奇怪的atoi函数!

好奇怪的一个问题,我第一次碰到,尝试了多少次也没有找到合适的解决方法,最后自己封装了一个函数my_atoi,不知大侠们有过这样的经历没?

 

{"time":"20110509105915","error":"0","msg":"成功!","prod_total":"70"}

 

char json_value[10];

 

 

通过下面的解析函数,解析出prod_total,然后*num = atoi(json_value);

 

结果却为0!!!!,然后自己封了一个简单的atoi,*num = my_atoi(json_value)打印出来却是70!!!

问题补充:我在linux下是正确的,这个程序是板子上的,放在板子里跑就错了!

 

求解!!!!!!!!

 

int json_object_get(char *json, const char *name, char *outbuf, int outbuf_len)

{

char *p1 = json, *p2 = NULL, *p3 = NULL;

int len;

 

memset(outbuf,0x0,outbuf_len);

 

while(1)

{

 

p2 = strstr(p1, name);

 

if(p2 == NULL)

return -1;

if(*(p2-1) == 34 || *(p2+1) == 34)//全字匹配

break;

else

{

p1 = p2 + strlen(name)+3;

 

}

}

 

p2 += strlen(name)+3; 

if(*p2 == 34)//两个""   连在一起的

return 0;

p3 = strchr(p2,34);//34 -->"

if(p3 == NULL)//json格式错误

return -2;

len = p3 - p2 ;//110127 add "-1"

 

len = (len < outbuf_len-1 )?len:(outbuf_len-1);//对长度超过存储空间采用截取

memcpy(outbuf,p2,len);

 

#ifdef TEST_PRODUCT

Uart_Printf(outbuf);

#endif

return len;

 

}

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

TiannaiTNDSC

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值