输入一个字符串,同时输入帧头和帧尾(可以为多个字符),将该字符串中的合法的帧识别出来。
int head_flog = 0;
int tail_flog = 0;
char *tail(char *s, char *b)
{
int num = 0;
int len_b;
char *temp = b;//
len_b = strlen(b);
if((NULL == s) || (NULL == b))
{
return NULL;
}
if(strlen(s) < strlen(b) )
{
return NULL;
}
if(head_flog != 0)
{
while((*s != '\0') && (!tail_flog))
{
while(*s == *temp)
{
s++;
temp++;
num++;
if(num == len_b)
{
tail_flog = 1;
temp = s -1;
break;
}
}
if((num != 0)&&(num != len_b))
{
num = 0;
temp = b;
s--;
}
s++;
}
}
if(tail_flog != 0)
{
return temp;
}
else
{
printf("string illgeal!\n");
return NULL;
}
}
char *head(char *s, char *a)
{
int num = 0;
int len_a;
char *temp = a;
len_a = strlen(a);
if ((NULL == s) ||(NULL == a))
{
return NULL;
}
if (strlen(s) < strlen(a))
{
return NULL;
}
while ((*s != '\0') && (!head_flog))
{
while(*s == *temp)
{
s++;
temp++;
num++;
if(num == len_a)
{
head_flog = 1;
temp = s - len_a;
break;
}
}
if((num != 0)&&(num != len_a))
{
num = 0;
temp = a;
s--;
}
s++;
}
if(head_flog != 0)
{
return temp;
}
else
{
printf("string illgeal!\n");
}
}
int main()
{
char s[100];
char a[5];
char b[5];
int n;
int i;
char *start = NULL;
char *end = NULL;
printf("Enter string(<=100)!\n");
scanf("%s",s);
printf("Enter head string(<=5)!\n");
scanf("%s",a);
printf("Enter tail string(<=5)!\n");
scanf("%s",b);
start = head(s,a);
end = tail(s,b);
n = end - start + 1;
if (n > 0)
{
for (i = 0; i < n; i++)
{
printf("%c",*start);
start++;
}
printf("\n");
}
else
{
printf("No data!\n");
}
return 0;
}
#include<stdio.h>
#include<string.h>int head_flog = 0;
int tail_flog = 0;
char *tail(char *s, char *b)
{
int num = 0;
int len_b;
char *temp = b;//
len_b = strlen(b);
if((NULL == s) || (NULL == b))
{
return NULL;
}
if(strlen(s) < strlen(b) )
{
return NULL;
}
if(head_flog != 0)
{
while((*s != '\0') && (!tail_flog))
{
while(*s == *temp)
{
s++;
temp++;
num++;
if(num == len_b)
{
tail_flog = 1;
temp = s -1;
break;
}
}
if((num != 0)&&(num != len_b))
{
num = 0;
temp = b;
s--;
}
s++;
}
}
if(tail_flog != 0)
{
return temp;
}
else
{
printf("string illgeal!\n");
return NULL;
}
}
char *head(char *s, char *a)
{
int num = 0;
int len_a;
char *temp = a;
len_a = strlen(a);
if ((NULL == s) ||(NULL == a))
{
return NULL;
}
if (strlen(s) < strlen(a))
{
return NULL;
}
while ((*s != '\0') && (!head_flog))
{
while(*s == *temp)
{
s++;
temp++;
num++;
if(num == len_a)
{
head_flog = 1;
temp = s - len_a;
break;
}
}
if((num != 0)&&(num != len_a))
{
num = 0;
temp = a;
s--;
}
s++;
}
if(head_flog != 0)
{
return temp;
}
else
{
printf("string illgeal!\n");
}
}
int main()
{
char s[100];
char a[5];
char b[5];
int n;
int i;
char *start = NULL;
char *end = NULL;
printf("Enter string(<=100)!\n");
scanf("%s",s);
printf("Enter head string(<=5)!\n");
scanf("%s",a);
printf("Enter tail string(<=5)!\n");
scanf("%s",b);
start = head(s,a);
end = tail(s,b);
n = end - start + 1;
if (n > 0)
{
for (i = 0; i < n; i++)
{
printf("%c",*start);
start++;
}
printf("\n");
}
else
{
printf("No data!\n");
}
return 0;
}