1.strcmp的模拟实现
int my_strcmp(const char* s1,const char* s2)
{
assert(s1 && s2);
while (*s1 == *s2)
{
if (*s1 == '\0')
{
return 0; //相等
}
s1++;
s2++;
}
if (*s1 > *s2)
{
return 1; //大于
}
else
return -1; //小于
}
int main()
{
char arr1[] = "abcde";
char arr2[] = "abcdc";
int ret = my_strcmp(arr1, arr2);
if (ret > 0)
{
printf(" >");
}
else if (ret == 0)
{
printf("=");
}
else
printf("<");
return 0;
}
2.strncmp的模拟实现
int my_strncmp(const char* s1, const char* s2, int n)
{
int count = 0;
while (*s1 == *s2)
{
count++;
if (count == n) //判断比较次数是否等于需要比较的字符个数
{
return 0;
}
s1++;
s2++;
}
if (*s1 > *s2)
{
return 1; //大于
}
else
return -1; //小于
}
int main()
{
char arr1[] = "abedef";
char arr2[] = "abcdc";
int ret = my_strncmp(arr1, arr2,3);
if (ret > 0)
{
printf(" >");
}
else if (ret == 0)
{
printf("=");
}
else
printf("<");
return 0;
}
3.strstr的模拟实现
char* my_strstr(const char* str1, const char* str2)
{
assert(str1 && str2);
const char* s1 = str1;
const char* s2 = str2;
const char* tmp = str1;
while (*tmp)
{
s1 = tmp;
s2 = str2;
while (*s1 && *s2 && (*s1 == *s2))
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return(char*)tmp;
}
tmp++;
}
return NULL;
}
int main()
{
char arr1[] = "abbbcdef";
char arr2[] = "bbc";
char* ret = my_strstr(arr1, arr2);
if (ret == NULL)
{
printf("找不到");
}
else
{
printf("找到了%s,它的下标是%Id", ret,ret-arr1);
}
return 0;
}