1.模拟实现strlen
函数介绍
字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包括('\0')
参数指向的字符串必须以‘/0’结束。
注意函数的返回值为size_t,是无符号的
学会strlen函数得模拟
代码实现:
2.模拟实现strcpy
函数介绍:
源字符必须以'\0'结束
会将源字符串中的'\0'拷贝到目标空间
目标空间必须足够大,以确保能存放源字符串
目标空间必须可变
很多小伙伴在实现strcpy的时候有没有我这种情况
其实这里打印不出来的原因就是 找不到arr2里的'\0'所以一直在找导致编译器都崩了
代码实现
3.模拟实现strcmp
函数介绍:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
注意!strcmp比较的不是字符串的长度而是!!!比较字符串中对应位置上的字符的大小,如果相同,那就比较下一对儿,直到不同或者遇到'\0';
代码实现
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[] = "abcdef"; char arr2[] = "abcdef"; int ret = strcmp(arr1, arr2); if (ret > 0) { printf(">\n"); } else if (ret == 0) { printf("==\n"); } else { printf("<\n"); } printf("%d\n", ret); }
4.模拟实现strcat
函数介绍
源字符必须以'\0'结束
目标空间必须足够大,能容纳下源字符串的内容
目标空间必须可修改
字符串自己给自己追加,如何?
在我们实现strcat的时候往往会出现下面这种情况
原因如下:1.arr1中不知道'\0'的位置 导致arr2一直在找 找到后 bit添加到arr1中
2.arr1的空间不够大 已经形成了内存的越界访问
代码实现
5.模拟实现strstr
代码实现:
以上就是小王同学给友友们带来的五中库函数的模拟实现!