标签:turn strstr stdio.h bre 结果 定义 color put break
这个还是有点小麻烦的,我自己写的实现效果不太好,代码也很糟,然后查资料看到了比较好的算法(有的是直接用C库函数strstr),放在这里记录一个。
#include <stdio.h> #include <string.h> int Strstr(char * s1, char * s2) //自定义一个子串匹配的函数 { int flag; char * p, * q; for(; * s1 != ‘\0‘; s1++) { if (* s2 == * s1) // 判断字符串中是否有和要判断的字串首字符相同的字符 { flag = 1; p = s1; // s1 p为第一个相同字符的地址 q = s2; for(; * q != ‘\0‘;) // 如果有则判断接下去的几个字符是否相同 { if (* q++ != * p++) { flag = 0; break; } } } if (flag == 1) break; } return (flag); } int main() { char a[20], b[20], * p = a, * q = b; int flag = 1; puts("请输入两组字符串进行比较:"); gets(a); gets(b); puts("匹配结果:"); if(flag == Strstr(strlen(a) < strlen(b) ? q : p, strlen(a) > strlen(b) ? q : p)) printf("%s 是 %s 的子串\n",strlen(a) < strlen(b) ? a : b, strlen(a) > strlen(b) ? a : b); else puts("匹配失败!"); return 0; }
标签:turn strstr stdio.h bre 结果 定义 color put break
原文地址:http://www.cnblogs.com/darkchii/p/7390427.html