【C 语言】字符串拷贝 ( 指针使用前判空 | while 空语句 )
【摘要】
文章目录
一、指针使用前判空二、while 空语句三、代码示例
一、指针使用前判空
在任何指针使用之前 , 要先进行判空 ;
尤其是 函数 形参 指针 , 使用前...
一、指针使用前判空
在任何指针使用之前 , 要先进行判空 ;
尤其是 函数 形参 指针 , 使用前先 判断该 指针变量 是一个合法的指针 ;
在 void str_copy(char *from, char *to)
函数中 , 使用两个指针之前 , 首先要确保这两个指针都不为空 ;
使用如下代码 , 判断指针的合法性 , 如果指针为 NULL , 则立刻退出 ;
// 判断 参数中的 指针变量 不为空
if(from == NULL || to == NULL)
{
// 这两个指针有任何一个为空 , 都直接退出
return;
}
- 1
- 2
- 3
- 4
- 5
- 6
二、while 空语句
在 C 中 , 可以使用 while 空语句 , 只需要定义循环条件 , 省略循环体 , 核心功能在循环控制条件中实现 ;
// 从 from 指针指向的字符 拷贝到
// to 指针指向的字符
// 如果拷贝的值不是 \0 , 则指针累加
// 如果拷贝的值是 \0
// 这样就不需要额外拷贝 \0 字符了
while((*to++ = *from++));
- 1
- 2
- 3
- 4
- 5
- 6
三、代码示例
代码示例 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* 实现字符串拷贝 ( 实现了模块化 )
* 将 from 指针指向的字符串 拷贝到 to 指针指向的字符串换
*/
void str_copy(char *from, char *to)
{
// 判断 参数中的 指针变量 不为空
if(from == NULL || to == NULL)
{
// 这两个指针有任何一个为空 , 都直接退出
return;
}
// 从 from 指针指向的字符 拷贝到
// to 指针指向的字符
// 如果拷贝的值不是 \0 , 则指针累加
// 如果拷贝的值是 \0
// 这样就不需要额外拷贝 \0 字符了
while((*to++ = *from++));
}
int main()
{
// 定义一个字符串数组
// "Hello World!" 常量在 全局区 的常量区
// 然后 拷贝到了 栈内存中的 array 数组中
char array[] = "Hello World!";
// 在栈内存中定义 char *指针
// 在堆内存分配 20 字节内存 , 用于存放字符串
char *buffer = malloc(20);
// 调用字符串拷贝函数
str_copy(array, buffer);
// 打印拷贝结果
printf("buffer = %s\n", buffer);
// 命令行不要退出
system("pause");
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
执行结果 :
buffer = Hello World!
请按任意键继续. . .
- 1
- 2
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/121483695
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)