取字符串

#include <stdio.h>
#include <string.h>


#define m 999


int find(char str[m], char a[m], int j)
{
int i = j;                            //在函数中用i代替j进行操作,保护j的数值以便进行main中下一个find

char *p1 = a;                        //指针*p1指向特殊字符串首字符 
char *p = str + j;                    //指针*p指向待测字符串的第j+1个字符    

while(*p != '\0')                    //利用指针从str的第j+1个字符进行寻找特殊字符串直至'\0'
{
if(*p == *p1) //如果第一个开头字符与特殊字符串(帧头,帧尾)相同
{                                    //就进入while循环分辨是否为特殊字符串     
while(*p == *p1 && *p1 != '\0')  //从*p1开始比较,直至28行的if循环成立,则找到了特殊字符串
{                             
p++;
i++; //i跟随循环,如果找到特殊字符串,则i表示特殊字符最后对应的'\0'
p1++;                      
}

if(*p1 == '\0')
{ //找到第一个特殊字符串后,结束循环
break;       
}
}


else                                 //如果第一个字符不同,就继续寻找,进行下一轮while循环
{
p++;
i++;
}
}

return i;                                //函数返回n
}






int main()
{



    int i = 0;
int n = 0;
int end = 0;
int begin = 0;

    char str[m];
    char head[m];
    char tail[m];


    printf("input str:\n");
    gets(str);
    printf("input head:\n");
    gets(head);
    printf("input tail:\n");
    gets(tail);                   //提示输入字符串以及帧头帧尾


    n = find(str, head, 0);       //利用find函数找到第一个帧头,返回的n对应帧头最后的'\0'
    begin = n - strlen(head);   //用begin记录帧头的第一个的字符位置,准备输出时作为起始
    end = find(str, tail, n);        //find函数找到第一个帧尾并用end记录帧尾的最后一个字符位置,输出时作为结束值


    for(i = begin;i < end;i++)            //打印帧头帧尾之间的字符串(包括帧头帧尾)
    {
printf("%c",str[i]);
    }
    printf("\n");




    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值