OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3856|回复: 6

关于sscanf的取值异常的问题

[复制链接]

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2018-8-24
在线时间
32 小时
发表于 2020-11-24 14:40:01 | 显示全部楼层 |阅读模式
1金钱
问题一:在C编译器上试了试,简单代码如下,两种写法结果就不一样,不清除原因,有无大佬告知一下
  1.     u8 a=2;
  2.     u32 b=12345;
  3.     char buf[30]={"192.168.1.50:52000"};
  4.     u16 buf1[6]={0},c=0;   
  5.                
  6.         a=sscanf(buf,"%d.%d.%d.%d:%d",&buf1[0],&buf1[1],&buf1[2],&buf1[3],&c);                 //a=5 0.168.1.50:52000
  7. //        a=sscanf(buf,"%d.%d.%d.%d:%d",&buf1[0],&buf1[1],&buf1[2],&buf1[3],&buf1[4]); //a=5 192.168.1.50:52000
复制代码
问题二:在C编译器上第二行的写法无误,但在stm32上运行会导致hardfault,

最佳答案

查看完整内容[请看2#楼]

已解决,sscanf取的值按4字节写。所以会异常
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2018-8-24
在线时间
32 小时
 楼主| 发表于 2020-11-24 14:40:02 | 显示全部楼层
已解决,sscanf取的值按4字节写。所以会异常
1.png
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-11-25 01:21:19 | 显示全部楼层
帮顶
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2018-8-24
在线时间
32 小时
 楼主| 发表于 2020-11-25 10:36:48 | 显示全部楼层

原子哥好晚呀,要不要试试我这个,- -。
回复

使用道具 举报

5

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
777
金钱
777
注册时间
2016-7-15
在线时间
119 小时
发表于 2020-11-25 11:30:25 | 显示全部楼层
看来是非字节对齐读取的锅,指针的强制转换读取很容易错误
好好学习,天天向上。
回复

使用道具 举报

3

主题

312

帖子

0

精华

高级会员

Rank: 4

积分
907
金钱
907
注册时间
2011-10-19
在线时间
196 小时
发表于 2020-11-25 13:19:48 | 显示全部楼层
%d对int,%u对unsigned int,不要乱套。
  1.     int a;
  2.     char buf[30]={"192.168.1.50:52000"};
  3.     unsigned int ip[4] = {0};
  4.     unsigned int p = 0;

  5.     a = sscanf(buf, "%u.%u.%u.%u:%u", &ip[0], &ip[1], &ip[2], &ip[3], &p);
  6.     printf("a = %d, ip = %u.%u.%u.%u, port = %u\n", a, ip[0], ip[1], ip[2], ip[3], p);
复制代码
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4947
金钱
4947
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-11-25 14:26:23 | 显示全部楼层
查查程序吧,我用你的代码debug,两个现象是一样的

微信截图_20201125142514.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 21:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表