在C中,要模拟实现这几个库函数,是对指针的传参与函数的调用的考察,代码如下,仅供参考
strcpy函数:
#includechar* my_strcpy(char* dest, const char* src){assert(dest);//断言指针的有效性assert(src);char*pa = dest;while (*dest++ = *src++);return pa;}
strstr函数:
int my_strstr(const char*str1, const char*str2){assert(str1);assert(str2);int i = 0;char*p1 = str1;char*p2 = str2;while (*p1 != '\0'&&*p2 != '\0'){if (*p1 == *p2){p2++;p1++;}else{p2 = str2;p1 = str1 + i;i++;}}if (*p2 == '\0'){return 1;}elsereturn 0;}
strcat函数:
char* my_strcat(char*str1, const char*str2){assert(str1);assert(str2);char*pa = str1;while (*pa){pa++;}while (*pa++ = *str2++);return str1;}
这里strcat函数不支持重叠拷贝,例如“1234567”这个字符串,如果要从第二位开始拷贝到第四位,从这个字符串第一位开始拷贝,编译器就会进行内存报错,使用时需要慎重。
如有不足,希望指正。