输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
#include <stdio.h>
int head_flag = 0;
int success = 0;
int my_strlen(char *str)
{
int i = 0;
while(*str != '\0')
{
i++;
str++;
}
return i;
}
char *head_add(char *str,char *head)
{
if(str == NULL ||head == NULL )
{
return NULL;
}
if(my_strlen(str) < my_strlen(head) )
{
return NULL;
}
char *temp ;
int head_len = my_strlen(head);
int head_count = 0;
while( *str != '\0' && !head_flag )
{
while(*str == *head)
{
str++;
head++;
head_count++;
if(head_count == head_len)
{
head_flag = 1;
temp = str - head_len ;
break;
}
}
str++;
}
if (head_flag)
{
//printf("%d\n",temp);
return temp;
}
else
{
printf("string illgeal");
}
}
char *tail_add(char *str,char *tail)
{
if(str == NULL ||tail == NULL )
{
return NULL;
}
if( my_strlen(str) < my_strlen(tail) )
{
return NULL;
}
int tail_len = my_strlen(tail);
int tail_count = 0;
if(head_flag)
{
while( *str != '\0' && !success)
{
while(*str == *tail)
{
str++;
tail++;
tail_count++;
if(tail_count == tail_len)
{
success = 1;
break;
}
}
str++;
}
}
if(success)
{
//printf("%d\n",str-1);
return str - 1 ;
}
else
{
printf("string illgeal");
return NULL;
}
}
int main()
{
char *str = "adsheadasitailwer";
char *head = "head";
char *tail = "tail";
char *str_start = head_add(str,head);
char *str_end = tail_add(str,tail);
printf("before:\n");
printf("%s\n",str);
printf("after:\n");
int n = str_end -str_start;
int i = 0;
// printf("%d",n);
for(i = 0; i <n ;i++)
{
printf("%c",*str_start);
str_start ++;
}
printf("\n");
return 0;
}
自己写的一个关于 帧头帧尾的
题目: 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧
这个题目感觉要完善的有很多 比如有多个head和多个tail,那么到底是以那个head为帧头,那个tail为帧尾。。。。
运行如下

浙公网安备 33010602011771号