IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言程序编程模拟实现strlen函数和strcpy函数 -> 正文阅读

[C++知识库]C语言程序编程模拟实现strlen函数和strcpy函数

C语言程序编程模拟实现strlen函数和strcpy函数(超详细的注释和解释)


先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要的动力 看完之后别忘记关注我哦!???
前言:作者:Yu
常用c程序编译器:vs2019**
**

用c程序编程实现strlen函数和strcpy函数是代码新人对指针基础理解和运用的一个好方法,通过用代码实现strlen和strcpy函数可以很好地帮助我们在刚接触c代码时巩固我们自身对代码的理解和提高写代码的能力

库函数里面的strlen函数:

strlen函数原型:size_t strlen ( const char * str );
通过该函数的返回值我们能直接字符串的长度
*1.size_t代表该函数返回值是一个无符号整型
2.const charstr 代表该函数的参数是一个不可改变的字符串的地址.

strlen函数的运用:

#include<stdio.h>
#include<string.h>//使用strlen函数我们需要引用该头文件
int main()
{
	char ch[20] = "abcdef";//定义一个字符串,并初始化
	int ret=strlen(ch);//将strlen函数的返回值赋给ret
	printf("%d\n", ret);//打印结果
	return 0;
}

//输出的结果是:6
//或者我们可以使用gets函数来输入自己想要的字符

代码模拟实现strlen函数:

我们知道,字符串的结尾都有一个’\0’,这个就是字符串结尾的标志。
那我们的思路就是,定义一个count变量来统计字符串长度,我们一个一个字符往后找,如果找到的字符不是’\0’那我们的count++一下,到最后,count的数就是我们所求的字符串长度啦!
上代码:

//strlen函数是通过找'\0'来判断字符串长度的
size_t my_strlen(char* str)//我们的函数返回类型是size_t,也就是无符号整型
{
	int count = 0;//定义一个count来计算我们的字符串长度
	while (*str != '\0')//循环走起来,如果我们找到的字符不是'\0',count++一下,str++一下,找下一个
	{
		str++;
		count++;
	}
	return count;
}
int main()
{
	char ch[20] = "abcdef";
	int ret = my_strlen(ch);//将my_strlen函数的返回值赋给ret
	printf("%d\n", ret);
	return 0;
}

在这里我们有用到指针的一些基础知识
一开始,我们是定义了一个数组ch,它的类型是char,里面放着我们的字符串,
我们写一个函数my_strlen来求这个长度的时候
我们要传参给我的函数
一维数组传参,传过去的是首元素的地址,因此,我们函数接收参数的时候,要写成char* 类型
(注意,charstr里面的和后面str里面的的意义是不同的哦,暂时不明白的伙伴可以私信我)
那么,我们的循环条件就是,str指向的字符如果不是’\0’,我们就要让str++一下,判断下一个
当我们找到’\0’的时候我们就可以跳出循环了,最后我们函数返回count即可得到我们的字符串长度。
(关于不知道const是什么意思的伙伴,可以给我留言哦)

以上这个模拟代码还可以进行优化:例如将循环条件直接改成(*str++)也是可以的!这样后面就不用写str++了。

如果对以上解释还有疑问的伙伴可以给我留言哦

库函数里面的strcpy函数

strcpy函数原型char * strcpy ( char * destination, const char * source );
strcpy函数可以帮助我们把一个字符串的内容拷贝到另一个字符串上。话不多说我们上代码:
strcpy函数的运用

int main()
{
	char arr1[20] = "xxxxxxxxxxxx";
	char arr2[] = "hello bro";
	strcpy_s(arr1, arr2);
	printf("%s\n", arr1);
}

输出结果在这里插入图片描述
我们看到,我们已经成功将arr2里面的内容拷贝到了arr1里面了。

代码模拟strcpy函数

同样,与上面strlen的模拟一样,我们也要用到函数传参等知识
思路:arr2的第一个元素赋给arr1的第一个元素
arr2的第二个元素赋给arr2的第二个元素…

        直到我们找到了arr2的'\0',说明我们的复制已经完成了
        此处要注意,我们的'\0'也是要拷贝过去的
        为什么:因为字符串以'\0'结尾,如果不拷贝'\0'过去,我们输出的结果就会编程hello broxxxxx...直到找到'\0'为止。
        因此,我们上代码:
void my_strcpy(char* dest, char* src)
//dest代表拷贝的目的地,src代表拷贝的来源
{
	while (*src != '\0')//同样的,循环走起来

	{
		*dest = *src;//把来源拷贝到目的地去
		dest++;//拷贝完一个拷贝下一个
		src++;
	}
	*dest = *src;//因为当遇到'\0'之后就会跳出循环
	             //此处我们要把'\0'也拷贝过去
}
int main()
{
	char arr1[20] = "xxxxxxxxx";
	char arr2[] = "hello";
	my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

这样,我们的strcpy函数就模拟好了
当然,我们的函数部分还可以继续优化

void my_strcpy(char* dest, char* src)
{
	while (*dest++=*src++)

	{
		;
	}
}

这个就是优化后的函数部分的版本,这样写更简单,在这里就不解释啦!


以上就是这期博客的所有内容啦,希望看完的你可以在从中学到一些东西,走之前别忘记了点赞和关注哦!!!


  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 11:36:46  更:2021-10-08 11:37:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:40:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码