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 语言字符串拷贝 ( 字符串拷贝业务逻辑代码 | 分离 主函数 与 字符串拷贝 业务模型 )的主要内容,如果未能解决你的问题,请参考以下文章