C 语言字符串拷贝 ( 字符串拷贝业务逻辑代码 | 分离 主函数 与 字符串拷贝 业务模型 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言字符串拷贝 ( 字符串拷贝业务逻辑代码 | 分离 主函数 与 字符串拷贝 业务模型 )相关的知识,希望对你有一定的参考价值。





一、字符串拷贝业务逻辑代码



下面的代码 , 是 字符串 拷贝 最简单的代码 , 仅 使用 指针 遍历内存 , 实现了字符串拷贝功能 ;

上述操作 , 没有考虑 任何 软件 设计功能 ;


代码示例 :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()

    // 定义一个字符串数组
    // "Hello World!" 常量在 全局区 的常量区
    // 然后 拷贝到了 栈内存中的 array 数组中
    char array[] = "Hello World!";

    // 在栈内存中定义 char[] 数组
    // 指定数组大小 20 个 char 元素
    char buffer[20];

    // 循环控制变量
    int i = 0;

    // 将 array 数组中的数据 , 拷贝到 buffer 数组中

    // 遍历时 , 只要遍历到的值不为 \\0 , 就进行复制
    // 如果遍历到 \\0 , 则直接退出 , \\0 没有存储到 buffer 数组中
    for(i = 0; *(array + i) != '\\0'; i++)
    
        // 使用指针操作 字符数组 进行拷贝赋值操作
        *(buffer + i) = *(array + i);
    

    // \\0 没有存储到 buffer 数组中
    // 此处专门进行 \\0 字符存储
    buffer[i] = '\\0';

    // 打印拷贝结果
    printf("buffer = %s\\n", buffer);

    // 命令行不要退出
    system("pause");
    return 0;

运行结果 :

buffer = Hello World!
请按任意键继续. . .





二、分离 主函数 与 字符串拷贝 业务模型



将 字符串拷贝 抽象成 函数模型 , 传入 2 2 2 个指针 , 这两个指针分别指向一个数组空间 , 从一个指针指向的内存中 , 拷贝数据到另一个指针指向的内存中 ;

/*
 * 实现字符串拷贝 ( 实现了模块化 )
 *      将 from 指针指向的字符串 拷贝到 to 指针指向的字符串换
 */
void str_copy(char *from, char *to)

    // 如果 from 指向的字符不为 \\0 , 则继续遍历
    // 此处无法将 \\0 拷贝到 to 字符串中
    for(; *from != '\\0'; from++, to++)
    
        // 拷贝字符
        *to = *from;
    
    // 将字符串最后一个字节拷贝过去
    *to = '\\0';


完整代码示例 :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
 * 实现字符串拷贝 ( 实现了模块化 )
 *      将 from 指针指向的字符串 拷贝到 to 指针指向的字符串换
 */
void str_copy(char *from, char *to)

    // 如果 from 指向的字符不为 \\0 , 则继续遍历
    // 此处无法将 \\0 拷贝到 to 字符串中
    for(; *from != '\\0'; from++, to++)
    
        // 拷贝字符
        *to = *from;
    
    // 将字符串最后一个字节拷贝过去
    *to = '\\0';


int main()

    // 定义一个字符串数组
    // "Hello World!" 常量在 全局区 的常量区
    // 然后 拷贝到了 栈内存中的 array 数组中
    char array[] = "Hello World!";

    // 在栈内存中定义 char[] 数组
    // 指定数组大小 20 个 char 元素
    char buffer[20];

    // 调用字符串拷贝函数
    str_copy(array, buffer);

    // 打印拷贝结果
    printf("buffer = %s\\n", buffer);

    // 命令行不要退出
    system("pause");
    return 0;

执行结果 :

buffer = Hello World!
请按任意键继续. . .

以上是关于C 语言字符串拷贝 ( 字符串拷贝业务逻辑代码 | 分离 主函数 与 字符串拷贝 业务模型 )的主要内容,如果未能解决你的问题,请参考以下文章

编写C语言的字符串拷贝函数

自定义c语言字符串拷贝函数strcpy

C语言 字符串操作函数及内存拷贝函数归总

文件拷贝,用C语言实现命令行式的COPY功能

C语言串拷贝(strcpy)和内存拷贝(memcpy)函数有啥不同?

C语言如何实现拷贝图片?几行代码即可搞定