首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C 语言】字符串拷贝 ( 字符串拷贝业务逻辑代码 | 分离 主函数 与 字符串拷贝 业务模型 )

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

作者头像
韩曙亮
发布2023-03-29 21:22:00
发布2023-03-29 21:22:00
1.3K0
举报

文章目录

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


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

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

代码示例 :

代码语言:javascript
复制
#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;
}

运行结果 :

代码语言:javascript
复制
buffer = Hello World!
请按任意键继续. . .

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


将 字符串拷贝 抽象成 函数模型 , 传入

2

个指针 , 这两个指针分别指向一个数组空间 , 从一个指针指向的内存中 , 拷贝数据到另一个指针指向的内存中 ;

代码语言:javascript
复制
/*
 * 实现字符串拷贝 ( 实现了模块化 )
 *      将 from 指针指向的字符串 拷贝到 to 指针指向的字符串换
 */
void str_copy(char *from, char *to)
{
    // 如果 from 指向的字符不为 \0 , 则继续遍历
    // 此处无法将 \0 拷贝到 to 字符串中
    for(; *from != '\0'; from++, to++)
    {
        // 拷贝字符
        *to = *from;
    }
    // 将字符串最后一个字节拷贝过去
    *to = '\0';
}

完整代码示例 :

代码语言:javascript
复制
#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;
}

执行结果 :

代码语言:javascript
复制
buffer = Hello World!
请按任意键继续. . .
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、字符串拷贝业务逻辑代码
  • 二、分离 主函数 与 字符串拷贝 业务模型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档