判断一个字符串是否为另外一个字符串旋转之后的字符串。

例如:给定s1 = AABCDs2 = BCDAA,返回1,给定s1=abcds2=ACBD,返回0.


#include <stdio.h>

#include <string.h>

#include <assert.h>

typedef unsigned int uint;//定义无符号×××

char *my_strncat(char *dest, const char *src, uint  count)

/*my_strncat实现两个相同字符串的链接,

因为在这里如果用strcat函数永远找不到原字符串的结束标志

所以程序将陷入死循环,但是用strncat能够很好的避免这一现象的发生*/

{

assert(dest);//检测指针的有效性

assert(src);

char *ret = dest;

while (*dest)

{

dest++;

}

while (count--)

{

*dest++ = *src++;

}

*dest = '\0';

return ret;

}



char *my_strstr(const char *str1,const char *str2)

{


char *ptr = str1;

char *p1 = NULL;

char *p2 = NULL;

while (*ptr)

{

p1 = ptr;

p2 = str2;

while ((*p1) &&*p1 == *p2)

{

p1++;

p2++;

if (*p2 == '\0')

return ptr;

}

ptr++;

}

return NULL;

}


int main()

{

char arr[20] = "abcdef";//abcdefabcdef

char *p = "cdefab";

int len = strlen(arr);

my_strncat(arr, arr, len);

char *ch = my_strstr("ABBBCDEF", "BCD");

if (ch != NULL)

{

printf("%p\n", ch);

printf("%s\n", ch);

}

else

{

printf("not exist\n");

}

printf("%s\n", arr);

system("pause");

return 0;