#include
//================================================================
//查找指定字符串在另一字符串中的位置
//输入参数:
//src 输入源
//des 要查找的数组的起始位置
//bGetEnd 查找长度
//输出参数:
// -1,输入数据无效
// 0, 没有找到数据
//0以上,表示找到数据的位置
//================================================================
int mystrstr( char * src, char * des ,char bGetEnd )
{
char * i;
int ret=0;
int ret1=0;
if(( *src == 0) || ( *des == 0 ) )
{
return -1; //输入的数据无效
}
i =strstr(src,des); //调用系统函数strstr,查找指定字符串在另一字符串中的位置
if( i == 0 ){
return 0; //没有找到数据
}
ret = i - src;
if( bGetEnd!=0){ //如果 bGetEnd ==1,则返回包含 des字符串长度 的数据
ret1 = strlen(des); //调用系统函数strlen,计算字符串的长度
ret += ret1;
}
return ret; //如果 bGetEnd ==0,则返回 des字符串起始位置 的数据
}
int main()
{
char pUART_Buf[]={"+IPD,0,10:1234567"}; //这是固有数据+字符串
char pGet_Buf[100]={0}; //用来保存提取出来的字符串
char sFindString[]={":"}; //这是要查找和字符
int ret;
ret = mystrstr ( (char *)&pUART_Buf ,(char *)&sFindString ,11 );
//10为字符串 "+IPD,0,xx:"的长度
//内存块比较 pUART_Buf 等于sFindString,返回值就=0
//使用memcmp函数,要先引用:
memcpy( (char *) &pGet_Buf ,(char *) &pUART_Buf[ret] , (strlen(pUART_Buf) - ret) );
//先引用 "string.h"
//用法:memcpy( 目标数组 , 源数组 ,截取的长度 )
//(strlen(pUART_Buf) - ret) ,计算出需要的数组的长度
//这样,就可以提取到 1234567 这样的字符串了。
return 0;
}