您的位置:首页 > 其它

输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.

2013-04-16 22:09 477 查看
#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为帧尾。。。。

运行如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐