OpenEdv-开源电子网

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

单片机学习GPRS模块,里面SIM900A程序问题

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2017-3-29
在线时间
5 小时
发表于 2017-5-6 15:11:51 | 显示全部楼层 |阅读模式
        if(sim800c_send_cmd("AT+CNUM","+CNUM",200)==0)
        {
                p1=(u8*)strstr((const char*)(USART2_RX_BUF),",");
                p2=(u8*)strstr((const char*)(p1+2),"\"");   
                p2[0]=0;//加入结束符
               
                sprintf((char*)p,"本机号码:%s",p1+2);
                Show_Str(x,y+170+25,200,16,p,16,0);
                USART2_RX_STA=0;               
        }

我想问一下,这里是怎么把号码后面的字符串去除的,如字符串:””,”13670613084”,”129”,7,4   怎么去掉”,”129”,7,4的?
另外,感觉P2指针并没有参与最终显示,但是却对最终显示有影响,这是怎么实现的呢?


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2017-5-6 20:56:06 | 显示全部楼层
Kyrie 发表于 2017-5-6 20:41
再次感谢您,是我自己指针和数组方面的基础知识不够牢靠,谢谢您的帮助,让我很好的巩固了自己指针数组方 ...

里面有描述有问题,希望没有带偏你。

p2[0],其地址即p2+0,即p2。
回复 支持 1 反对 0

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2017-5-6 16:14:47 | 显示全部楼层
本帖最后由 BMN李 于 2017-5-6 20:56 编辑

假如USART2_RX_BUF的内容为””,”13670613084”,”129”,7,4

p1=(u8*)strstr((const char*)(USART2_RX_BUF),",");//查找””,”13670613084”,”129”,7,4里第一个逗号的位置,即””,”13670613084”,”129”,7,4这里的标红处
p2=(u8*)strstr((const char*)(p1+2),"\"");//p1+2指向””,”13670613084”,”129”,7,4这里的标红处,即号码的起始位置,从这里开始向后查找第一个引号的位置,即””,”13670613084,”129”,7,4这里的标红处,目的是找号码的结束位置
p2[0]=0;//p2[0],其地址即p2+0,即p2,即””,”13670613084,”129”,7,4这里的标红处,将其改写为数字0,即‘\0’,即字符串的结束符
所以
sprintf((char*)p,"本机号码:%s",p1+2);//p1+2指向””,”13670613084\0,”129”,7,4这里的标红处,从这里开始读入,遇见‘\0’结束,即p内容为13670613084


回复 支持 1 反对 0

使用道具 举报

9

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
931
金钱
931
注册时间
2017-3-23
在线时间
255 小时
发表于 2017-5-6 15:32:37 | 显示全部楼层
strstr是一种函数,从字符串str1中查找是否有符串str2,如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2017-3-29
在线时间
5 小时
 楼主| 发表于 2017-5-6 20:03:24 | 显示全部楼层
BMN李 发表于 2017-5-6 16:14
假如USART2_RX_BUF的内容为””,”13670613084”,”129”,7,4

p1=(u8*)strstr((const char*)(USART2_R ...

谢谢您,解决了我的疑惑!
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2017-3-29
在线时间
5 小时
 楼主| 发表于 2017-5-6 20:41:47 | 显示全部楼层
BMN李 发表于 2017-5-6 16:14
假如USART2_RX_BUF的内容为””,”13670613084”,”129”,7,4

p1=(u8*)strstr((const char*)(USART2_R ...

再次感谢您,是我自己指针和数组方面的基础知识不够牢靠,谢谢您的帮助,让我很好的巩固了自己指针数组方面基础!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 03:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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