输入一个字符串,同时输入帧头和帧尾

    xiaoxiao2021-03-26  32

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

    提示:帧头和帧尾分别是headtail  字符串”asdheadhauboisoktail”headhauboisoktail是合法帧

    #include <stdio.h> #include <string.h> int substr(char str[255],char s[255],int k);   //函数查找帧头帧尾 int main() {     char str[255];     char head[255];     char tail[255];     int x,y;     int i = 0,t;     printf("enter a string:\n");     scanf("%s",str);     printf("enter head:\n");     scanf("%s",head);     printf("enter tail:\n");     scanf("%s",tail);     t = substr(str,head,0);     x = t - strlen(head);     //x是帧头第一个字符对应的下标位置     y = substr(str,tail,t);   //y是帧尾字符串后面的一个字符下标位置     for(i = x;i < y;i++)        //打印帧头帧尾之间的字符串(包括帧头帧尾)     { printf("%c",str[i]);     }     printf("\n");     return 0; } int substr(char str[255],char s[255],int k) { char *p = str+k;     //定义k变量是因为第一次找到帧头后,k记录此时指针的位置,在找帧尾 char *p1 = s;               时就从帧头后面开始找 int i = k; int flag = 0,m;      //flag标志位,为1时标志找到第一个帧头,即不再继续寻找 while(*p != '\0') { if(*p == *p1 && flag == 0)       //如果第一个开头字符相同就进入循环查看后面字 {                                          符是否相同 while(*p == *p1 && *p1 != '\0') { p++;                                 p1++; i++;    //i记录指针位置 } if(*p1 == '\0') { flag = 1;    //flag为1,找到第一个帧头(或帧尾)就不在寻找 m = i;       //把此时的指针所指的下标位置赋给m让函数返回m } } else { p++; i++; } } return m; }
    转载请注明原文地址: https://ju.6miu.com/read-658606.html

    最新回复(0)