#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *Legal(char *ptr, char *start, char *end)
{
int l = strlen(ptr);
int l1 = strlen(start);
int l2 = strlen(end);
int index = 0, index1 = 0, flag = 0, flag1 = 0;//
char *tmp = (char *)malloc(sizeof(char) * 50);
int i;
if(NULL == tmp)
{
printf("NULL ERROR");
exit(1);
}
for(i = 0; i < l - l1 + 1; ++i)
{
if(strncmp(ptr + i, start, l1) == 0)
{
flag = 1;
break;
}
index++;
}
//printf("%d\n", flag);
//printf("%d\n", strlen(ptr + index + l1));
//printf("%d\n",l-index-l1);
for(i = index; i < (l -l2 + 1 + l1); ++i)
{
if(strncmp(ptr + i, end, l2) == 0)
{
flag1 = 1;
break;
}
index1++;
}
//printf("%d\n", flag1);
if(flag != 1 || flag1 != 1)
{
printf("输入为非法字符串\n");
exit(1);
}
strncpy(tmp, ptr + index, index1 + l2 );
return tmp;
}
int main()
{
char *ptr = (char *)malloc(sizeof(char) * 50);
char *start = (char *)malloc(sizeof(char) * 50);
char *end = (char *)malloc(sizeof(char) * 50);
if(NULL == ptr || NULL == start || NULL == end)
{
printf("NULL ERROR\n");
exit(1);
}
printf("请输入一串数\n");
scanf("%s", ptr);
printf("请输入帧头和帧尾\n");
scanf("%s%s", start, end);
//printf("%s\t%s\n", start, end);
printf("合法字符串为%s\n", Legal(ptr, start, end));
return 0;
}