首页 > 其他分享 >strlen求字符串长度 模拟实现strlen函数 strcpy函数 模拟实现strcpy strcat函数 模拟实现strcat

strlen求字符串长度 模拟实现strlen函数 strcpy函数 模拟实现strcpy strcat函数 模拟实现strcat

时间:2024-08-09 19:25:04浏览次数:18  
标签:arr dest strcat char ++ strcpy strlen

文章目录

1.1strlen求字符串长度

strlen是一个库函数所包含的头文件为#include<string.h>,这里我们可以在C plusplus上找到strlen所包含的头文件以及strlen传入后函数所生成的一个参数
在这里插入图片描述
这个函数返回的类型为siz_t的值为无符号整形为正数(>=0)的数,参数为const char* str,你需要传入一个字符类型相关的数据来求出从起始地址->'\0’所有符号的长度
在这里插入图片描述
结果为
在这里插入图片描述
因为传入的是arr,arr为你的首元素地址作为参数传入到strlen函数中
因为字符串中大部分都有所对应的ASCII
ASCII值地址

1.2模拟实现strlen函数

如何模拟strlen求出字符串的长度,首先我们肯定需要知道strlen这个函数所需要的函数参数以及返回类型
在这里插入图片描述
如图所示,strlen的返回类型为size_t,它的参数是const char* str
我们先写代码来理解他的含义

#include<stdio.h>
#include<assert.h>
size_t My_strlen(const char* str)
//const为char*类型的指针指向的变量无法进行修改
{
    assert(str);     //==assert(str!=NULL)不为空指针
    size_t count = 0;//数量从0开始返回count类型
    while (*str++)//这里进去之后再去指向数组中第二个地址
    {
       count++ ;//数量++
    }
    return count;
}
int main()
{
    char arr[] = {"abcdef"};
    size_t rec = My_strlen(arr);
    printf("%zu",rec);
    return 0;
}

2.1 strcpy函数

strcpy也是一个经常使用到的函数,cpy顾名思义就是拷贝的意思,他就是将一个字符串拷贝到数组中(你的数组需要将字符串容纳进去)
在这里插入图片描述

它的返回类型也是char* 而参数第一个destination为目的地,将你想要考入的数据放到参数1中,source为源头,至于为什么第二个参数有const第一个没有,因为第二个是你需要将源头的内容拷贝到目的地,源头肯定不可以修改,而目的地这时候已经被修改,参数1不需要加const
在这里插入图片描述
在这里插入图片描述
可以看到已经将str中的字符串拷贝到arr中(如果arr中有字符的情况下,目的地的字符会被源头的字符覆盖掉,源头字符直到\0停止)

2.2 模拟实现strcpy

#include<stdio.h>
#include<assert.h>
char* My_strcpy(char* dest,const char*s)
{
    char *ret = dest;
    assert(s);
    while (*s)
    {
        *dest++= *s++;//将s的字符放到dest中++寻找下个字符
    }
    *dest = *s;//因为while循环\0为0终止循环,最后在拷贝\0,
    return ret;//返回首元素的地址
}
int main()
{
    char arr[30] = {"abcedeadwadwadada"};
    char str[15] = {"Hello, World"};
    My_strcpy(arr,str);
    printf("%s", arr);
    return 0;
}

3.1strcat函数

在这里插入图片描述
在这里插入图片描述
strcat函数介绍为:将源字符串的副本追加到目标字符串,destination中的结束null字符被source的第一个字符覆盖,并且在destination中由两者串联形成的新字符串的末尾包含一个空字符。
目的地和源头不得重叠。
这里的意思就是目的地中的第一个\0会被第一个字符覆盖然后继续覆盖,当源头的字符串覆盖完成生成一个新的\0

在这里插入图片描述
在这里插入图片描述
这里我们可以看到arr1中追加了arr2中的字符。

3.2模拟实现strcat

这里的传入参数的值和上面的步骤相同可以看一下上面
代码实现

#include<stdio.h>
#include<assert.h>
char* My_strcat(char* dest,const char* src)
{
    char *ret = dest;
    assert(dest && src);
    // char* rec = *dest;
    while (*dest!='\0')
    //首先因为我们知道了目的地的值第一个\0开始开始覆盖的,所以我们需要得到找到\0
    {
        dest++;//这里找到第一个\0
    }
    while(*dest++ = *src++)//这里我们开始从第一个\0开始被src覆盖
    {
        ; // *dest++=*src++//也可以这么写
    }
    return ret;
}
int main()
{
    char arr1[30] = {"abcde"};
    char arr2[10] = {"abcd"};
    My_strcat(arr1,arr2);
    printf("%s", arr1);
    return 0;
}

在这里插入图片描述

标签:arr,dest,strcat,char,++,strcpy,strlen
From: https://blog.csdn.net/weixin_60489641/article/details/141037755

相关文章

  • C语言入门 --- sizeof 与 strlen 的区别
    ......
  • 模拟实现 strcat(字符串追加) --浅谈C语言
    strcat描述char*strcat(char*dest,constchar*src)把src所指向的字符串追加到dest所指向的字符串的结尾。声明下面是strcat()函数的声明。char*strcat(char*dest,constchar*src)参数dest--指向目标数组,该数组包含了一个C字符串,且足够容纳追加后的字符......
  • C primer plus 4.23 strlen函数
    一、strlen函数    **用来给出字符串的长度#include<stdio.h>#include<string.h>#definePRAISAE"Youareamextraordinarybeing."intmain(void) {   charname[40];   printf("Whatyourname?");      scanf("%s",nam......
  • C语言 -- sizeof和strlen的用法
    C语言--sizeof和strlen的用法1.sizeof和strlen的对比​1.1sizeof​1.2strlen​1.3sizeof和strlen的对比​2.数组和指针笔试题解析2.1一维数组​2.2字符数组​2.3二维数组3.指针运算笔试题解析3.1题目1:3.2题目2​3.3题目3​3.4题目4​3.5题目5​3.6......
  • C语言——字符串拼接strcat及自实现代码
    strcat函数在C语言中,strcat函数用于将两个字符串连接起来,即将源字符串(sourcestring)追加到目标字符串(destinationstring)的末尾,并返回目标字符串。这个函数定义在头文件<string.h>中。函数原型如下:char*strcat(char*dest,constchar*src);dest:目标字符串的指针,这个字符......
  • C语言:字符串函数族strlen,strcmp,C语言实现,
    1.字符串的复制:#include<stdio.h>#include<string.h>intmain(intargc,constchar*argv[]){ chararr[20]={0}; charbrr[20]={0}; intlen; inti; printf("请输入目标字符串arr:\n"); gets(arr); printf("请输入源字符串:\n"); gets(brr......
  • 深入解析sizeof和strlen的区别与联系
    目录一、深度解析1.sizeof2.strlen 二、对比三、举例说明总结 大家好,今天我们来探讨一下C语言中两个常用的函数sizeof和strlen。虽然它们都与字符串有关,但它们的用途和实现原理却大相径庭。下面我将从以下几个方面进行对比分析:一、深度解析1.sizeof定义:sizeof是......
  • strlen函数的模拟实现
    strlen函数的作用:统计字符串中'\0'之前的字符个数。法一:通过计数器count实现在自定义函数中,创建一个count变量作为计数器统计字符串中'\0'之前的字符个数,并将count计数器返回给主调函数。具体实现方法如下:每当*pc遇到的字符不是'\0'时,计数器count++,直到遇到'\0'停止计数......
  • 字符和字符串(2)(sizeof和strlen)
    1.初识sizeof与strlen函数    sizeof:准确的讲,sizeof不算一个函数,确切的说,它应该是一个运算符。sizeof使用的文件头文件就是#include<stdio.h>,sizeof运算符计算的是一个变量在计算机空间所占内存,当你使用sizeof函数计算一个变量空间的大小时,把这个变量放在si......
  • strlen/strcpy/strncpy/strcat/strcmp/memset/memcmp不完成实现(部分函数跑过测试集)
    #include<klib.h>#include<klib-macros.h>#include<stdint.h>#if!defined(__ISA_NATIVE__)||defined(__NATIVE_USE_KLIB__)size_tstrlen(constchar*s){//panic("Notimplemented");assert(s!=NULL);size_tl=0;......