#include<stdio.h>
#include<string.h>
int main(){
char s1[100001],s2[100001];
while(scanf("%s\n%s",s1,s2)!=EOF){
if(strlen(s1)<strlen(s2)){
printf("no\n");
}
strcat(s1,s1);
if(strlen(s1)>=strlen(s2))
{
if(strstr(s1,s2)==NULL){
printf("no\n");
}
else
printf("yes\n");
}
}
return 0;
}
strcat的可能实现,如果2个参数指向同一个的话,那么s永无止境了。
void mycat(char *d, char *s)
{
while (*d) d++;
while (*s) *d++ = *s++;
*d=*s;
}
已经有人解答strcat的函数原型了,看函数原型就知道了,自己连接自己是不成功的!因为该函数内部采用自增的方式,已经到了字串末尾了。怎么去连接吗?
你可以采用内存复制函数替换
memcpy(&s1[strlen(s1)],s1,strlen(s1));
只需要一句就够了。