目录
1.模拟实现strlen
函数介绍
代码实现:
2.模拟实现strcpy
函数介绍:
代码实现
3.模拟实现strcmp
函数介绍:
代码实现
4.模拟实现strcat
函数介绍
代码实现
5.模拟实现strstr
代码实现:
友友们 我是你们的小王同学
今天带给大家 一篇保姆级的库函数的模拟实现
如果写的对大家有帮助的话 请关注我的主页:你们的三连是我最大的动力
(doge)学好c语言的小王同学的博客_CSDN博客-领域博主还可以关注小王的gitee 比特王信哲 (bitewang) - Gitee.com
1.模拟实现strlen
函数介绍
字符串已经 ' ' 作为结束标志,strlen函数返回的是在字符串中 ' ' 前面出现的字符个数(不包括(' ')参数指向的字符串必须以‘/0’结束。注意函数的返回值为size_t,是无符号的学会strlen函数得模拟
代码实现:
函数介绍
字符串已经 ' ' 作为结束标志,strlen函数返回的是在字符串中 ' ' 前面出现的字符个数(不包括(' ')参数指向的字符串必须以‘/0’结束。注意函数的返回值为size_t,是无符号的学会strlen函数得模拟
代码实现:
字符串已经 ' ' 作为结束标志,strlen函数返回的是在字符串中 ' ' 前面出现的字符个数(不包括(' ')参数指向的字符串必须以‘/0’结束。注意函数的返回值为size_t,是无符号的学会strlen函数得模拟
2.模拟实现strcpy
函数介绍:
源字符必须以' '结束会将源字符串中的' '拷贝到目标空间目标空间必须足够大,以确保能存放源字符串目标空间必须可变
源字符必须以' '结束会将源字符串中的' '拷贝到目标空间目标空间必须足够大,以确保能存放源字符串目标空间必须可变
很多小伙伴在实现strcpy的时候有没有我这种情况
其实这里打印不出来的原因就是 找不到arr2里的' '所以一直在找导致编译器都崩了(doge)
代码实现
3.模拟实现strcmp
函数介绍:第一个字符串大于第二个字符串,则返回大于0的数字第一个字符串等于第二个字符串,则返回0第一个字符串小于第二个字符串,则返回小于0的数字注意!strcmp比较的不是字符串的长度而是!!!比较字符串中对应位置上的字符的大小,如果相同,那就比较下一对儿,直到不同或者遇到' ';
代码实现
int my_strcmp(const char*s1,const char*s2) {
assert(s1 && s2);
while (*s1 == *s2) {
if (*s1 == ' ') {
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("
int my_strcmp(const char*s1,const char*s2) {
assert(s1 && s2);
while (*s1 == *s2) {
if (*s1 == ' ') {
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("
4.模拟实现strcat
函数介绍
源字符必须以' '结束目标空间必须足够大,能容纳下源字符串的内容目标空间必须可修改字符串自己给自己追加,如何?
源字符必须以' '结束目标空间必须足够大,能容纳下源字符串的内容目标空间必须可修改字符串自己给自己追加,如何?
在我们实现strcat的时候往往会出现下面这种情况
代码实现原因如下:1.arr1中不知道' '的位置 导致arr2一直在找 找到后 bit添加到arr1中
2.arr1的空间不够大 已经形成了内存的越界访问
5.模拟实现strstr 代码实现:
以上就是小王同学给友友们带来的五中库函数的模拟实现!
如果文章对大家有帮助的话 不如给个三连吧!



