前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言保姆级喂饭——库函数的模拟实现

C语言保姆级喂饭——库函数的模拟实现

作者头像
王同学要努力
发布2022-12-20 16:46:51
8300
发布2022-12-20 16:46:51
举报

目录 1.模拟实现strlen​ 函数介绍 代码实现:  2.模拟实现strcpy​ 函数介绍: 代码实现  3.模拟实现strcmp​ 函数介绍:  代码实现 4.模拟实现strcat​  函数介绍  代码实现  5.模拟实现strstr 代码实现:

友友们 我是你们的小王同学  今天带给大家 一篇保姆级的库函数的模拟实现 如果写的对大家有帮助的话 请关注我的主页:你们的三连是我最大的动力 (doge)学好c语言的小王同学的博客_CSDN博客-领域博主 还可以关注小王的gitee  比特王信哲 (bitewang) - Gitee.com

1.模拟实现strlen

函数介绍

  • 字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包括('\0')
  • 参数指向的字符串必须以‘/0’结束。
  • 注意函数的返回值为size_t,是无符号的
  • 学会strlen函数得模拟

代码实现:

 2.模拟实现strcpy

函数介绍:

  • 源字符必须以'\0'结束
  • 会将源字符串中的'\0'拷贝到目标空间
  • 目标空间必须足够大,以确保能存放源字符串
  • 目标空间必须可变

 很多小伙伴在实现strcpy的时候有没有我这种情况

其实这里打印不出来的原因就是 找不到arr2里的'\0'所以一直在找导致编译器都崩了(doge

代码实现 

3.模拟实现strcmp

函数介绍:

  • 第一个字符串大于第二个字符串,则返回大于0的数字
  • 第一个字符串等于第二个字符串,则返回0
  • 第一个字符串小于第二个字符串,则返回小于0的数字
  • 注意!strcmp比较的不是字符串的长度而是!!!比较字符串中对应位置上的字符的大小,如果相同,那就比较下一对儿,直到不同或者遇到'\0';

 代码实现

代码语言:javascript
复制
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

代码实现:

以上就是小王同学给友友们带来的五中库函数的模拟实现!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.模拟实现strlen
    • 函数介绍
      • 代码实现:
      •  2.模拟实现strcpy
        • 函数介绍:
          • 代码实现 
          • 3.模拟实现strcmp
            • 函数介绍:
              •  代码实现
              • 4.模拟实现strcat
                •  函数介绍
                  •  代码实现
                  •  5.模拟实现strstr
                    • 代码实现:
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档