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

#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为帧尾。。。。

 

运行如下

 

posted @ 2013-04-16 22:09  菜鸟上路ING  阅读(702)  评论(0编辑  收藏  举报