1.模拟实现strcmp
方法一
代码语言:javascript复制int my_strcmp(const char* str1, const char* str2)
{
while (*str1 && (*str1 == *str2))
{
str1 ;
str2 ;
}
return *(const unsigned char*)str1 - *(const unsigned char*)str2;
}
以上是一个简单的模拟实现strcmp
函数的代码,它会逐个字符比较两个字符串的对应位置,直到两个字符串的某个字符不同。如果到达字符串的结尾仍然相等,则两个字符串相等。比较的结果返回值为整数:
- 如果str1<str2,返回负数;
- 如果str1>str2,返回正数;
- 如果str1=str2,返回0。
注意:这里使用了无符号字符指针,是因为以有符号字符指针相减得到的结果会因为符号位的影响而不稳定。
方法二
代码语言:javascript复制int my_strcmp (const char * src, const char * dst)
{
int ret = 0 ;
assert(src != NULL);
assert(dest != NULL);
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
src, dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return ret ;
}
2.模拟实现 strcat
方法一
代码语言:javascript复制#include <stdio.h>
#include <string.h>
void mystrcat(char* dest, const char* src) {
while (*dest) { // 找到 dest 的末尾
dest ;
}
while (*src) { // 将 src 中的字符依次复制到 dest 的末尾
*dest = *src ;
}
*dest = '