一、模拟实现strcmp函数
strcmp是字符串比较函数,通过比较字符的ASCII码值来比较大小
例如:"abc"和"abb"两个字符串,先比第一个字符,相等,在比较第二个字符,相等,在比较第三个字符,c的ASCII码值大于b,所以字符串"abc"大于"abb"
strcmp的返回类型为int
当str1大于str2时,返回大于0的数
当str1等于str2时,返回0
当str1小于str2时,返回小于0的数
#include#include #include int my_strcmp(const char* str1, const char* str2) { assert(str1 && str2); while (*str1!=' ' && *str2!=' ' && *str1 == *str2) { str1++; str2++; } return (*str1 - *str2); } int main() { char arr1[] = "ab"; char arr2[] = "abc"; int ret = my_strcmp(arr1, arr2); if (ret > 0) printf("大于n"); else if (ret < 0) printf("小于n"); else printf("等于n"); return 0; }
二、模拟实现strstr函数
strstr是在字符串中查找子串的函数
就是在str1字符串中查找是否有str2字符串,返回的是在str1中子字符串首元素的地址
例如:在"abcdef"中查找是否有"bcd"字符串,答案是有,则函数返回字符"abcdefg"中b的地址
若找不到则返回空指针NULL
char* my_strstr(const char* str1, const char* str2)
{
char* p = str1;
while (*p)
{
char* s1 = p;
char* s2 = str2;
while (*s1 == *s2 && *s1 != ' ' && *s2 != ' ')
{
s1++;
s2++;
}
if (*s2 == ' ')
return p;
p++;
}
return NULL;
}
int main()
{
char arr1[] = "abbbbcdef";
char arr2[] = "bbc";
char* ret = my_strstr(arr1, arr2);
printf("%s", ret);
return 0;
}



