输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来. 提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhau
2016-11-02 15:33
671 查看
#include<stdio.h> #include<string.h> int head_flog = 0;//用于标记找到尾的标志 int tail_flog = 0;//用于标记找到头的标志 char *tail(char *s, char *b)//找到tail地址 { int num = 0;//计数字符长度,和b比较 int len_b; char *temp = b;//用于返回尾地址值的指针 len_b = strlen(b);//b的长度 if((NULL == s) || (NULL == b))//s,b为空,返回空地址 { return NULL; } if(strlen(s) < strlen(b) )//s长度小于b长度,返回空地址 { return NULL; } if(head_flog != 0)//找到头后,在开始找尾 { while((*s != '\0') && (!tail_flog))//*s不为空,且未找到尾 { while(*s == *temp) { s++; temp++; num++; if(num == len_b)//找到尾,赋值尾地址值和找到尾的标记 { tail_flog = 1; temp = s -1; break; } } if((num != 0)&&(num != len_b))//伪尾部,重新赋值找 { num = 0; temp = b; s--;//若伪尾部和真尾连续,则s指针要后退 } s++; } } if(tail_flog != 0)//找到尾,返回尾地址值 { return temp; } else { printf("string illgeal!\n"); return NULL; } } char *head(char *s, char *a)//找到head的地址 { int num = 0;//计数字符长度,用于和a长度比较 int len_a; char *temp = a;//用于返回头地址值的指针 len_a = strlen(a);//字符a长度 if ((NULL == s) ||(NULL == a))//s,a为空,返回空指针 { return NULL; } if (strlen(s) < strlen(a))//s长度小于a的长度,返回空指针 { return NULL; } while ((*s != '\0') && (!head_flog))//*s不为空,且未找到头 { while(*s == *temp) { s++; temp++; num++; if(num == len_a)//找到头部,赋值头指针值和找到头的标记 { head_flog = 1; temp = s - len_a; break; } } if((num != 0)&&(num != len_a))//伪头部,重新赋值找 { num = 0; temp = a; s--;//若伪头和真头连续,则s要指针后退 } s++; } if(head_flog != 0)//找到头,返回头地址值 { return temp; } else { printf("string illgeal!\n"); } } int main() { char s[100]; char a[5]; char b[5]; int n;//保存有效字符的长度 int i; char *start = NULL; char *end = NULL; printf("Enter string(<=100)!\n"); scanf("%s",s); printf("Enter head string(<=5)!\n"); scanf("%s",a); printf("Enter tail string(<=5)!\n"); scanf("%s",b); start = head(s,a);//开始地址 end = tail(s,b);//结束地址 n = end - start + 1; if (n > 0)//tail在head的后面,存在有效数据,否则无效 { for (i = 0; i < n; i++) { printf("%c",*start); start++; } printf("\n"); } else { printf("No data!\n"); } return 0; }
相关文章推荐
- 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来. 提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhaubo
- 题目:输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来. 提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headha
- 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来. 提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhau
- Linux_C练习:输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来。提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktai
- 【嵌入式系统学习记录】习题:输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来。比如:帧头和帧尾分别是head和tail 字符串”asdheadhauboiso
- 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
- 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
- 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
- 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
- 4.5题目: 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
- 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
- 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来。
- 输入一个字符串,同时输入帧头和帧尾
- 从键盘输入一个由字母构成的字符串(不大于30个字符),要求从该串中取出3个不重复的字符,求所有不同的取法。如果字符串中没有取到3个不同的字符,则提示没有结果。对取出的字符要求按字母升序排列成串,对于不
- 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名及8个字符的电话号码,并以一定的格式显示出来
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
- (c++)编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 如何在eclipse中输入一个字母或者一个符号就可以立即有提示出来!让您的编程方便快捷
- 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。