69,371
社区成员
发帖
与我相关
我的任务
分享
int instring(char *s1, char *s2) {
if (!strlen(s1) > strlen(s2)) return 0;
char *cur_s1 = s1;
char *cur_s2 = s2;
if (*cur_s1 == '\0') return 1;
else return 0;
if (*cur_s1 == *cur_s2) return instring(cur_s1++, cur_s2++);
}
int instring(char *s1,char *s2)
{
if (strlen(s1) == 0)return 1;
char buf[100];
do{
if (strlen(s1) > strlen(s2))return 0;
int i = 0;
for (; i < strlen(s1); i++)
buf[i] = s2[i];
buf[i] = '\0';
if (strcmp(s1, buf) == 0)return 1;
s2++;
}while(1);
return 0;
}
汗,写错了。if (strcmp(s1, s2) == 0)return 1;改成if (strcmp(s1, buf) == 0)return 1;int instring(char *s1,char *s2)
{
if (strlen(s1) == 0)return 1;
char buf[100];
do{
if (strlen(s1) > strlen(s2))return 0;
int i = 0;
for (; i < strlen(s1); i++)
buf[i] = s2[i];
buf[i] = '\0';
if (strcmp(s1, s2) == 0)return 1;
s2++;
}while(1);
return 0;
}
那改成这样,原来memset和memcpy都不能用啊int instring(char *s1,char *s2)
{
int len1,i;
if(s1==NULL || s2==NULL) return 0;
len1 = (int)strlen(s1);
char *s = (char*)malloc(sizeof(char)*(len1+1)); //用个临时变量保存子串
s[len1] = '\0';
for(;*s2!='\0'&&strlen(s2)>=len1;s2++) //循环改变s2的开始位置
{
for (i=0;i<len1;i++) //用for循环从s2开始位置截取子串
s[i] = s2[i];
if (strcmp(s, s1) == 0) //如果截取的子串和s1相同
return 1;
}
free(s); //释放临时变量
return 0;
}
int instring(char *s1,char *s2)
{
int len1;
if(s1==NULL || s2==NULL) return 0;
len1 = (int)strlen(s1);
char *s = (char*)malloc(sizeof(char)*(len1+1)); //用个临时字符串
memset(s, '\0', len1+1);
for(;*s2!='\0'&&strlen(s2)>=len1;s2++) //循环改变s2的开始位置
{
memcpy(s, s2, len1); //从s2开始位置截取leng1长度的子串(这里用了memcpy,可以自己循环一个一个字符赋值)
if (strcmp(s, s1) == 0) //比较截取的子串是否和s1相同
return 1;
}
free(s);
return 0;
}
int instring(char *s1,char *s2)
{
int len1;
if(s1==NULL || s2==NULL) return 0;
len1 = (int)strlen(s1);
for(;*s2!='\0'&&strlen(s2)>=len1;s2++) //循环改变s2的开始位置
{
if (strncmp(s2, s1, len1) == 0) //从s2的开始位置比较len1个字符是否和s1相同
return 1;
}
return 0;
}