运行了 失败了。。。。你可不可以修改一下呢?我实在是c语言无能。
追答把if(*temp='\0') 改成if(*temp=='\0')
s=second
下面加一加break;
下面程序是调试过的程序,刚装了VC
#include
int judge(char first[],char second[]) {
char *f=first,*s=second;
while(*f!='\0') {
char *temp=f;
if(*temp==*s) {
while(*s!='\0') {
if(*temp=='\0') return 0;
if(*temp!=*s) {
s=second;
break;
}
temp++;
s++;
}
if(s!=second) return 1;
}
f++;
}
return 0;
}
int main() {
char first[20]="abcdefghijklmnopqr";
char second[5]="dfg";
printf("%d\n",judge(first,second));
return 0;
}
站在巨人的肩膀上。
那个 能否解释一下啊??
追答加完注释字数就超了,是分抱歉。
追问你只要把函数比较重要的步骤跟我说一下就好了。还有说一下思路吧,真的不懂啊。。
追答int fa(char *str1,char *str2) //判断两个字符串是否相等,相等返回1,不等返回0
{
char *p1=str1;
char *p2=str2;
while(*p1!='\0' && *p2!='\0')//两个字符串都没到尾,循环
{
if(*p1==*p2)
{
p1++;
p2++;
}
else //如果字符串中相同位置的字符不等,说明两字符串不等,返回0
{
return 0;
}
}
if( *p2=='\0')// 不好意思 这里应该改成这样!!!!!!!!!!!!
{
return 1;
}
return 0;
}
int fb(char *str1,char *str2)//判断str2是否str1的子串
{
char *p1=str1;
while(*p1!='\0')
{
if(fa(p1,str2))//如果str2和p1开始的字符串相等,str2是str1的子串,返回1
{
return 1;
}
else //不等p1向后走一位
{
p1++;
}
}
return 0;
}