1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【C 语言】字符串拷贝 ( 指针使用前判空 | while 空语句 )

【C 语言】字符串拷贝 ( 指针使用前判空 | while 空语句 )

时间:2021-10-03 02:16:13

相关推荐

【C 语言】字符串拷贝 ( 指针使用前判空 | while 空语句 )

文章目录

一、指针使用前判空二、while 空语句三、代码示例

一、指针使用前判空

在任何指针使用之前 , 要先进行判空 ;

尤其是 函数 形参 指针 , 使用前先 判断该 指针变量 是一个合法的指针 ;

void str_copy(char *from, char *to)函数中 , 使用两个指针之前 , 首先要确保这两个指针都不为空 ;

使用如下代码 , 判断指针的合法性 , 如果指针为 NULL , 则立刻退出 ;

// 判断 参数中的 指针变量 不为空if(from == NULL || to == NULL){// 这两个指针有任何一个为空 , 都直接退出return;}

二、while 空语句

在 C 中 , 可以使用 while 空语句 , 只需要定义循环条件 , 省略循环体 , 核心功能在循环控制条件中实现 ;

// 从 from 指针指向的字符 拷贝到// to 指针指向的字符// 如果拷贝的值不是 \0 , 则指针累加// 如果拷贝的值是 \0// 这样就不需要额外拷贝 \0 字符了while((*to++ = *from++));

三、代码示例

代码示例 :

#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;}

执行结果 :

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。