首页
IT
登录
6mi
u
盘
搜
搜 索
IT
输入一个字符串,同时输入帧头和帧尾
输入一个字符串,同时输入帧头和帧尾
xiaoxiao
2021-03-26
32
1.
输入一个字符串
,
同时输入帧头和帧尾
(
可以是多个字符
),
将该字符串中合法的帧识别出来
.
提示
:
帧头和帧尾分别是
head
和
tail
字符串
”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
)