C语言三个函数的模拟实现详解

 更新时间:2022年03月23日 09:50:55   作者:WangLongxyd  
这篇文章主要为大家详细介绍了C语言三个函数的模拟实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

一、strcpy

//模拟实现strcpy
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char*dest, char*str)
{
	assert(dest && str);
	char* tmp = dest;
	while (*str != '\0')
	{
		*dest = *str;
		dest++;
		str++;
	}
	*dest = '\0';
	return tmp;
}
int main()
{
	char arr1[20] = "xxxxxxxxxxxxxxx";
	char arr2[] = "study hard!";
	my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

二、模拟实现strcat

思路:先找到目标字符串的\0位置,然后停下

用两个指针扫描目标字符串和源字符串,并赋值

在源字符串添加完成后,加上’\0‘

//模拟实现strcat
//字符串追加
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* str)
{
	assert(dest && str);
	char* tmp = dest;
	//找到目标的尾巴
	while (*dest != '\0')
	{
		dest++;
	}
	//链接字符串
	while (*dest++ = *str++)
	{
		;
	}
	*dest = '\0';
	return tmp;
}
int main()
{
	char arr1[20] = "hello";
	char arr2[] = " world!";
	my_strcat(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

三、strcmp

要注意,strcmp不是比较两字符串的长度,而是逐位比较字符的ASCII码值

//模拟实现strcmp 返回的不是1 -1,而是正数,负数
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* str1, const char* str2)
{
	assert(str1&&str2);
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
		{
			return 0;
		}
		str1++;
		str2++;
	}
	return *str1 - *str2;
}
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "abcder";
	int ret=my_strcmp(arr1, arr2);
	if (ret < 0)
	{
		printf("<\n");
	}
	else if (ret == 0)
	{
		printf("=\n");
	}
	else
	{
		printf(">\n");
	}
	return 0;
}

总结:

多多实现库函数的模拟可以更好地认识指针。

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!     

相关文章

  • vscode不同项目使用不同的插件的实现

    vscode不同项目使用不同的插件的实现

    本文主要介绍了vscode不同项目使用不同的插件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • c++中string类型和int类型相互转换的几种常用方法

    c++中string类型和int类型相互转换的几种常用方法

    我们在编写程序时,经常涉及到int与string之间的类型转换,本文主要介绍了c++中string类型和int类型相互转换的几种常用方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • C++实现链表版本通讯录

    C++实现链表版本通讯录

    这篇文章主要为大家详细介绍了C++实现链表版本通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 一文读懂C++ 虚函数 virtual

    一文读懂C++ 虚函数 virtual

    这篇文章主要介绍了C++ 虚函数 virtual的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • C++实现LeetCode(33.在旋转有序数组中搜索)

    C++实现LeetCode(33.在旋转有序数组中搜索)

    这篇文章主要介绍了C++实现LeetCode(33.在旋转有序数组中搜索),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++ auto类型说明符

    C++ auto类型说明符

    在C++11中引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型。当然,auto变量必须有初始值,这样编译器才能推断其类型
    2016-03-03
  • C语言深入了解函数

    C语言深入了解函数

    C语言函数是用来模块化构建程序的。如果你的功能少,你可以全都写在mian函数中,但是当实现功能多的时候,如果全写在main的函数里,不仅代码不美观,而且函数实现的时候结构复杂,代码重复
    2022-05-05
  • 利用Matlab实现时域分析功能的示例详解

    利用Matlab实现时域分析功能的示例详解

    利用MATLAB可以方便地进行控制系统的时域分析。这篇文章主要通过简单的示例为大家介绍了Matlab进行时域分析的具体操作,需要的可以参考一下
    2023-02-02
  • C++设计模式之代理模式(Proxy)

    C++设计模式之代理模式(Proxy)

    这篇文章主要为大家详细介绍了C++设计模式之代理模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 基于Qt制作一个定时关机的小程序

    基于Qt制作一个定时关机的小程序

    这篇文章主要为大家详细介绍了如何基于Qt制作一个有趣的定时关机的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12

最新评论