IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 一文带你吃透 strcpy 函数 -> 正文阅读

[C++知识库]一文带你吃透 strcpy 函数


年轻是我们唯一拥有权利去编织梦想的时光!💓💓💓

? 🌙写在前面

💖💖💖Hello,大家好啊,我是vince,小白一名,撰写博客::??一为更好的锻炼自己,巩固知识;:??二为和大家一起在代码的海洋里探索。

如果大家感兴趣的话 ——🎉🎉🎉 欢迎关注csdn博客:< vince >,我们互相学习,共同进步哈~🌟

今天vince将和大家一起去一一吃透字符串函数,接下来我将一篇文章介绍一个函数,这样大家在学习时也不会因为文章过长而劳累厌倦。??


?🎉🎉🎉strcpy函数详解如下🎉🎉🎉

在这里插入图片描述

? 🍋1.函数介绍

? 🌰1.1.函数接口

char * __cdecl strcpy(char * dst, const char * src);

这里是库函数里面的函数定义接口。该函数作用是将一组字符串复制到另一组字符串中去,就是所谓的 复制字符串函数

? 🌰1.2.函数分析

1、这里是将源字符串拷贝到目标字符串空间中去。
2、源字符串必须以 ‘/0’ 结束。
3、拷贝会将源字符串中的 ‘\0’ 拷贝进去。
4、目标空间必须足够大,且必须可变

💯图解分析:
在这里插入图片描述

在这里插入图片描述

? 🍋2.库函数strcpy源代码

char * __cdecl strcpy(char* dst, const char* src)
{
		char * cp = dst;
 	 	while((*cp++ = *src++) != '\0')
 				;               
 		return( dst )
 }

? 🌰2.1.库函数分析

💯 分析:
1、 这里 dst 就是指向目标字符空间的指针,所以不能用const 修饰,必须是可变的;src 是源字符串,源字符串可以用const 修饰。

2、 这里源字符串 src 结尾必须含有 ‘\0’ ,这样循环里的判断条件才能成立。

3、这里*cp++ = *strc++这种写法更加简便,缩短代码量。

在这里插入图片描述

? 🍋3.模拟实现 strcpy 函数

? 🌰3.1.模拟实现

char* my_strcpy(char* str2,const char* str1)
{
	char* first = str2;
	assert(str2 && str1);//这里注意,尽量把assert放在char* 
	//first的下一行
	//有的编译器中若将assert放在最前面,可能无法编译,因为C语言规定变量的常见必须放在代码前面
	while (*str2++ = *str1++)
	{
 		 ;
	}
	return first;
}
int main(void)
{
	char ch1[] = "abcde";
	char ch2[] = "XXXXXXXXXXXX";
 	printf("%s\n", my_strcpy(ch2, ch1));//这里是链式访问
	//在一个函数里面去访问另一个函数的值,就是链式访问
}

💯 分析总结:
1、尽量不要返回局部变量的地址。(因为局部变量在函数内部使用后:在出这个函数后,其局部变量的空间就会被销毁,就不会再指向这个函数之前使用的地址了,所以就无法访问到之前使用的地址,就会出现非法访问内存的错误)。

2、指针不知道赋什么值的时候,就给NULL。

3、指针使用完后,就给NULL。

在这里插入图片描述

? 🌙写在后面

友友们,相聚的时刻总是短暂的,又到了说再见的时候啦~ 🐳 但是字符串这一块经常在面试的时候会出模拟实现某某字符串函数的面试题,因此我们不能只会平时利用头文件直接调用而不去摸清原理哈~ 🐬要做到 摸清、拿捏、吃透 字符串函数。???

在这里插入图片描述
代码不负有心人,98加满,向前冲啊🐬

🎉🎉🎉以上代码均可运行,所用编译环境为 vs2019 ,运行时注意加上编译头文件#define _CRT_SECURE_NO_WARNINGS 1

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:24:29  更:2022-04-26 11:26:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:20:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码