strstr函数的一个小应用

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。(百度百科的解释),

这个函数在string.h这个头文件里,这个函数是我在使用SIM7600CE模块时发现的,这个4G模块用AT命令来进行控制的,比如你发送AT,模块会返回OK,表示模块准备好了,如果返回ERROR,那么表示模块没准备好。不同的命令,模块会做出不同的回应。

这个时候问题就来了,我该怎么去判断模块返回的信息是我想要的回应呢,因为模块会将你的命令及它的回答一起返回给你,有些命令的回复很长,这样你想要的应答在接收缓存区的位置是不固定的,所以判断起来有些麻烦,这时候我就找到了strstr这个函数

u8 SIM7600CE_check_cmd(u8 *str)
{
char *strx;

strx=strstr((const char*)USART3_RX_BUF,(const char*)str);
if(strx)
return 1;
else
{
return 0;
}
}

这是我使用SIM7600CE模块时的一个小函数,这里USART3_RX_BUF就是我接收模块应答的缓存区,后面u8*str 就是我存放我想要得到的应答的数组。通过这个函数我可以在USART3_RX_BUF这里面寻找,是否有我想要的应答消息。比如我发送AT+CPSI?查询当前SIM卡的网络注册信息,我想知道他注册的是2G网络还是3G网络还是4G网络,是移动还是联通还是电信呢,这时我就可以通过在USART3_RX_BUF中搜索 想对应的应答 ,比如移动的2G、3G、4G分别是GSM TD-SCDMA TD-LTE。我只需要通过查询这些关键的单词就可以来判断,不需要去分析模块返回的一堆信息。

注:本人刚毕业的一个小菜鸟 写这样的文章目的主要在于自己的积累。可能问题非常简单,甚至为常识问题。让大家见笑了,如果哪位博友无意中看到我的这个文章,如果那里有讲错,或者有好的补充,烦劳你在下面评论留言给我,先就此谢过。

你可能感兴趣的:(C语言函数)