输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来. 提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhaubo

来源:互联网 发布:isp图像处理编程 编辑:程序博客网 时间:2024/05/01 18:52
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co.,     Ltd.
File name:
Author:Jerey_Jobs    Version:0.1    Date:
Description:
Funcion List:
*****************************************************/

#include <stdio.h>

int find(char *s,char *a,char *b);

int main()
{
    char s[100],a[100],b[100];        //定义三个数组存放字符串和头尾字符串

 printf("Enter the long string : \n");        //提示用户输入字符串
 scanf("%s",s);
 printf("Enter the head string : \n");
 scanf("%s",a);
 printf("Enter the tail string : \n");
 scanf("%s",b);

 find(s,a,b);        //调用函数

    return 0;
}

int find(char *s,char *a,char *b)
{
 int head,tail;        //定义头尾节点位置变量
 int i = 0,j = 0,k = 0,flag = 0;        //定义循环变量i,j,k和标志位flag

 while(s[i] != '\0')
 {
  if((s[i] == a[j]) && !flag)        //当有一个字符和头字符串相等,继续判断是不是头字符串
  {
   head = i;        //将字符串位置赋值给头节点位置
      while((s[i] == a[j]) && s[i] != '\0')        //进入循环判断头字符串
      {
       i++;
       j++;
    flag = 1;      
      }
  }

  if((a[j] == '\0') && flag)        //当头字符串遍历结束并且标志位变为1,就认为已经找到头字符串
  {
      while((s[i] == b[k]) && s[i] != '\0')        //进入循环判断尾字符串
      {
       i++;
       k++;
    flag = 0;
      }
     }

  if((b[k] == '\0') && !flag)        //尾字符串遍历结束并且标志位为0,就认为已经找到尾字符串
  {
   tail = i;
   for(i = head;i < tail;i++)        //按照头尾节点位置输出字符串
   {
    printf("%c",s[i]);
   }
   printf("\n");
   break;
  }
  i++;
 }

 return 0;
}

0 0
原创粉丝点击