#include <stdio.h>
#include <string.h>
int main(){
char a[40],b[20];
void subchar(char str1[],char str2[]);
printf("请输入被测母串\n");
gets(a);
printf("请输入待测子串\n");
gets(b);
subchar(a,b);
return 0;
}
void subchar(char str1[],char str2[]){
int i=strlen(str1);
int j=strlen(str2);
int b;
for(int a=0;a<i;a++){
b=0;
while(str1[a+b]==str2[b]){
b++;
}
if (b==j){
printf("%s是%s的子串",str2,str1);
break;
}
}
if(b!=j){
printf("%s不是%s的子串",str2,str1);
}
}
/*这里我用的数组名参数法,在运行过程中发现了一个问题,当子串与母串的倒数几位完全一样时 匹配不了
比如说母串aaaaaaasuccess 和子串success匹配不了 但是只要是母串最后一位之前匹配完 就可以出正常结果
比如母串aaaaaasuccess和子串succes
实在是找不出为什么一旦涉及了母串最后一位 就匹配不出来 求大神指点迷津 在此谢过
#include <string.h>
int main(){
char a[40],b[20];
void subchar(char str1[],char str2[]);
printf("请输入被测母串\n");
gets(a);
printf("请输入待测子串\n");
gets(b);
subchar(a,b);
return 0;
}
void subchar(char str1[],char str2[]){
int i=strlen(str1);
int j=strlen(str2);
int b;
for(int a=0;a<i;a++){
b=0;
while(str1[a+b]==str2[b]){
b++;
}
if (b==j){
printf("%s是%s的子串",str2,str1);
break;
}
}
if(b!=j){
printf("%s不是%s的子串",str2,str1);
}
}
/*这里我用的数组名参数法,在运行过程中发现了一个问题,当子串与母串的倒数几位完全一样时 匹配不了
比如说母串aaaaaaasuccess 和子串success匹配不了 但是只要是母串最后一位之前匹配完 就可以出正常结果
比如母串aaaaaasuccess和子串succes
实在是找不出为什么一旦涉及了母串最后一位 就匹配不出来 求大神指点迷津 在此谢过