• strcpy的基本用法详解以及模拟实现strcpy


    1. strcpy的基本用法详解

    1.1 问题的提出

    例如 我们要把字符串"hello"复制到数组arr[20]中去时,你会怎么操作;

    首先   arr = "hello";//是错误的

    arr数组名是首元素的地址,是个地址常量,是个编号;难道把hello放到这个编号上?

    答案应该是放到编号所指向的空间中去;

    其中 destination是目标空间的地址,source是源空间的地址

    1.2 strcpy的基本原理:

    把源指针指向的空间的数据拷贝到目的地指针指向的空间中去;

    char* p = "hello";//把首字符的地址放到p中,p就指向了这个字符串;

    strcpy(arr,"hello");

    "hello"传参的时候传过去的是首字符'h'的地址,传给了source;其中destination指向了arr[20]整个数组,source指向了hello中'h'的地址;然后把source指向的hello拷贝放到destination指向的arr[20]中去;

    1.3使用 strcpy的注意事项:

    1.源字符串必须以 '\0' 结束

    当拷贝"hello"时字符串的结束标志'\0'也会被拷贝过去,'\0'也是strcpy终止拷贝的一个条件;

    2.会将源字符串中的 '\0' 拷贝到目标空间

    3.目标空间必须足够大,以确保能存放源字符串

    例如 arr[5]=0; strcpy(arr,"hello world");这是错误的

    4.目标空间必须可变

    例如
    char* str = "123456789000";
    char* p = "hello world";
    strcpy(str,p);//这也是错误的
    因为该目标空间是常量字符串,不可修改;

    2. 模拟实现strcpy

    1. char *my_strcpy(char *destination, const char*source)
    2. {
    3. char *ret = destination;
    4. assert(destination != NULL);
    5. assert(source != NULL);
    6. while((*destination++ = *source++))
    7. {
    8. ;
    9. }
    10. return ret;
    11. }

  • 相关阅读:
    贵金属金银铂铑钯回收-HP4080
    并查集讲解
    从零开始实现VAE和CVAE
    我选择了MySQL和SpringData JPA!
    Vue状态管理 Storage Vuex Pinia
    python代码是如何执行的?
    网络编程(七)网络超时检测
    二叉搜索树
    tingpng 批量压缩工具
    LuatOS-SOC接口文档(air780E)--crypto - 加解密和hash函数
  • 原文地址:https://blog.csdn.net/YLG_lin/article/details/126690885