#include <stdio.h>
#include <string.h>
char *findStr(char*,char*);
void findFrame(char*,char*,char*);//函数声明
int main()
{
char str[] = "asdheadhauboisoktailgdg";
findFrame(str,"head","tail");
return 0;
}
char *findStr(char* str,char* sub)
{
char *p = NULL;
int len = strlen(sub);
while(*str)
{
if(strncmp(str,sub,len)==0)
{
p=str;
break;
}
str++;
}
return p;
}
void findFrame(char *str,char *head,char *tail)//寻找帧的子函数
{
char *phead = findStr(str,head);
char *ptail = findStr(str,tail);
if(phead!=NULL&&ptail!=NULL)
{
ptail +=strlen(tail);
*ptail='\0';
printf("%s\n",phead);
}
}
这次的寻找合法帧让我收益很多,一开始自己编的有些繁琐,后来经过网上的学习查找,改进了自己的函数。
首先编写了一个寻找帧的子函数,它需要三个参数,一个你的字符串,一个帧头,一个帧尾。
这个子函数又调用了一个寻找字符串是否在主串中的子函数;
如果两个子串都在主串中被找到,那么这个主串中有合法帧。返回得到*phead和*ptail;*ptail+帧尾的长度就是整个合法帧的帧尾。
将其从帧头输出到帧尾,就是我们需要的合法帧。