我是靠谱客的博主 阳光大象,最近开发中收集的这篇文章主要介绍【算法】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("%dn", ret);//打印结果
return 0;
}

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

代码模拟实现strlen函数:

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

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

在这里我们有用到指针的一些基础知识
一开始,我们是定义了一个数组ch,它的类型是char,里面放着我们的字符串,
我们写一个函数my_strlen来求这个长度的时候
我们要传参给我的函数
一维数组传参,传过去的是首元素的地址,因此,我们函数接收参数的时候,要写成char* 类型
(注意,charstr里面的和后面str里面的的意义是不同的哦,暂时不明白的伙伴可以私信我)
那么,我们的循环条件就是,str指向的字符如果不是’’,我们就要让str++一下,判断下一个
当我们找到’’的时候我们就可以跳出循环了,最后我们函数返回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("%sn", arr1);
}

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

代码模拟strcpy函数

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


直到我们找到了arr2的'',说明我们的复制已经完成了
此处要注意,我们的''也是要拷贝过去的
为什么:因为字符串以''结尾,如果不拷贝''过去,我们输出的结果就会编程hello broxxxxx...直到找到''为止。
因此,我们上代码:
void my_strcpy(char* dest, char* src)
//dest代表拷贝的目的地,src代表拷贝的来源
{
while (*src != '')//同样的,循环走起来
{
*dest = *src;//把来源拷贝到目的地去
dest++;//拷贝完一个拷贝下一个
src++;
}
*dest = *src;//因为当遇到''之后就会跳出循环
//此处我们要把''也拷贝过去
}
int main()
{
char arr1[20] = "xxxxxxxxx";
char arr2[] = "hello";
my_strcpy(arr1, arr2);
printf("%sn", arr1);
return 0;
}

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

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

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


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


最后

以上就是阳光大象为你收集整理的【算法】C语言程序编程模拟实现strlen函数和strcpy函数的全部内容,希望文章能够帮你解决【算法】C语言程序编程模拟实现strlen函数和strcpy函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部