任务要求首先确定字符串str1是否是str2的子字符串。如果是这样,str1中str1的起始位置将被返回。C - 递归字符串中子字符串的位置
int instring (char *str1, char *str2);
void main() {
char *str1 = (char*) malloc (strlen(str1)*sizeof(char));
char *str2 = (char*) malloc (strlen(str2)*sizeof(char));
char ch;
int i = 0;
while (ch != '\n'){
ch = getchar();
str1[i] = ch;
i++;
}
str1[i] = '\0';
i = 0;
char ch1;
while (ch1 != '\n'){
ch1 = getchar();
str2[i] = ch1;
i++;
}
str2[i] = '\0';
printf("%d", instring(str1, str2));
return 0;
}
int instring(char *str1, char *str2){
int r;
if(*str1==0) return(0);
if(*str2==0) return -1;
if(*str1==*str2 && instring(str1+1,str2+1)==0) return(0);
r=instring(str1,str2+1);
if(r!=-1) return(r+1);
}
案例1: 实施适用于: STR1 = “Mediolan” STR2 = “MMediolan”
它返回1,这是正确的。
案例2: 但是它并不适用于: STR1 = “Mediolan” STR2 = “Mediolana”
返回-1。
我被困在这里,不知道如何重写代码,所以案例2将被正确照顾。
分配到'char'的getchar的'的返回值()'是自找麻烦。 – EOF