判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=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;