在C中,要模拟实现这几个库函数,是对指针的传参与函数的调用的考察,代码如下,仅供参考
strcpy函数:
#include <assert.h> char* 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; } else return 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”这个字符串,如果要从第二位开始拷贝到第四位,从这个字符串第一位开始拷贝,编译器就会进行内存报错,使用时需要慎重。
如有不足,希望指正。
本文出自 “pawnsir的IT之路” 博客,请务必保留此出处http://10743407.blog.51cto.com/10733407/1714484
C语言中模拟实现strcpy,strstr,strcat函数
原文地址:http://10743407.blog.51cto.com/10733407/1714484