C++ 中strcpy标准写法实例详解
发布时间 - 2026-01-11 01:49:05 点击率:次strcpy标准写法

实例代码:
// CppReference.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
using namespace std;
/*
* 说明:字符串拷贝版本1
* 参数:dest目标地址,src源地址
* 返回:返回拷贝好的地址;如果出错或者有重叠,无定义
* 异常:可能出现字符串溢出,及dest所占空间不如src所占空间大。
*/
char *strcpy_v1(char *dest , const char *src)
{
//调试时,使用断言,入口检测
assert( (dest!=NULL) && (src!=NULL) );
//注意这里的内存指向参数dest所在的内存,不是栈内存,因而可以在函数中返回
char *to = dest;
//主要操作在while条件中完成
while( (*dest++ = *src++)!='\0')
{
NULL;
}
//返回拷贝字符串首地址,方便连缀,比如strlen(strcpy(dest,"hello"))
return to;
}
/*
* 说明:字符串拷贝版本2
* 参数:dest目标地址,src源地址
* 返回:返回拷贝好的地址;如果出错,无定义
* 异常:可能出现字符串溢出,及dest所占空间不如src所占空间大。
*/
char *strcpy_v2(char *dest , const char *src)
{
char *d = dest;
char c;
while((c=*src++) != '\0')
{
*(dest++)=c;
}
*dest='\0';
return d;
}
/*
* 说明:字符串拷贝版本2(你能找出错误的原因吗)
* 参数:dest目标地址,src源地址
* 返回:返回拷贝好的地址;如果出错,无定义
* 异常:可能出现字符串溢出,及dest所占空间不如src所占空间大。
*/
char *strcpy_v2_error(char *dest , const char *src)
{
char *d = dest;
char c;
while((c=*src++) != '\0')
{
*(d++)=c;
}
*d='\0';
return d;
}
/*
* 说明:字符串拷贝版本3
* 参数:dest目标地址,src源地址
* 返回:返回拷贝好的地址;如果出错,无定义
* 异常:可能出现字符串溢出,及dest所占空间不如src所占空间大。
*/
char *strcpy_v3(char *dest , const char *src)
{
char *d = dest;
char c;
while(*src)
*dest++ = *src++;
*dest='\0';
return d;
}
/*
* 说明:字符串拷贝版本4
* 参数:dest目标地址,src源地址
* 返回:返回拷贝好的地址;如果出错,无定义
* 异常:可能出现字符串溢出,及dest所占空间不如src所占空间大。
*/
char *strcpy_v4(char *dest , const char *src)
{
char *d = dest;
char c;
while( (*dest = *src)!='\0')
{
src++;
dest++;
}
*dest='\0';
return d;
}
/*
* 说明:字符串拷贝版本5
* 参数:dest目标地址,src源地址
* 返回:返回拷贝好的地址;如果出错,无定义
* 异常:可能出现字符串溢出,及dest所占空间不如src所占空间大。restrict关键字限定字符串不能重叠。
*/
char *strcpy_v5(char* _restrict dest , const char* _restrict src)
{
char *d = dest;
char c;
while( (*dest = *src)!='\0')
{
src++;
dest++;
}
*dest='\0';
return d;
}
/*
* 说明:字符串拷贝版本6
* 参数:dest目标地址,src源地址
* 返回:返回拷贝好的地址;如果出错,无定义
* 异常:可能出现字符串溢出,及dest所占空间不如src所占空间大。restrict关键字限定字符串不能重叠。
*/
char *strcpy_v6(char* _restrict dest , const char* _restrict src)
{
char *d = dest;
char c;
while(*dest++=*src++);
return d;
}
int _tmain(int argc, _TCHAR* argv[])
{
char buf[512];
char *buf2 = (char *)calloc(50,sizeof(char));
char *buf3 = (char *)malloc(50*sizeof(char));
char *buf5 = (char *)malloc(50*sizeof(char));
char *buf6 = (char *)malloc(50*sizeof(char));
printf("using strcpy_v1,the string 'Hello,World'\'s length is : %d\n",strlen(strcpy_v1(buf,"Hello,World")));
printf("using strcpy_v2,the string 'This is the best age'\'s length is : %d\n",strlen(strcpy_v2(buf2,"This is the best age")));
printf("using strcpy_v2,the string 'This is the best age'\'s length is : %d\n",strlen(strcpy_v2_error(buf2,"This is the best age")));
printf("using strcpy_v3,the string 'This is the best age'\'s length is : %d\n",strlen(strcpy_v3(buf3,"This is the best age")));
printf("using strcpy_v5,the string 'This is the best age'\'s length is : %d\n",strlen(strcpy_v5(buf5,"This is the best age")));
printf("using strcpy_v6,the string 'This is the best age'\'s length is : %d\n",strlen(strcpy_v6(buf6,"This is the best age")));
system("pause");
return 0;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# C++
# 中strcpy标准写法
# C/C++
# strcpy标准写法
# 浅析C++中memset
# memcpy
# strcpy的区别
# C++实现strcpy函数实例
# 关于C++中strcpy函数例题讲解
# C++中strcpy函数的实现
# C++ std::copy与memcpy区别小结
# C++中memcpy函数的使用以及模拟实现
# C/C++中memset
# memcpy的使用及fill对数组的操作
# C++中strcpy和memcpy的区别小结
# 所占
# 可能出现
# 源地址
# 你能
# 希望能
# 谢谢大家
# 应用程序
# const
# NULL
# char
# strlen
# return
# assert
# strcpy_v2_error
# amp
# class
# brush
# cpp
# strong
# strcpy
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
昵图网官方站入口 昵图网素材图库官网入口
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
简历在线制作网站免费版,如何创建个人简历?
制作电商网页,电商供应链怎么做?
Laravel Docker环境搭建教程_Laravel Sail使用指南
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel如何实现用户密码重置功能?(完整流程代码)
电商网站制作价格怎么算,网上拍卖流程以及规则?
清除minerd进程的简单方法
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
JavaScript实现Fly Bird小游戏
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
SQL查询语句优化的实用方法总结
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
Windows Hello人脸识别突然无法使用
制作公司内部网站有哪些,内网如何建网站?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
历史网站制作软件,华为如何找回被删除的网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何为不同团队 ID 动态生成多个独立按钮
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
Laravel如何使用Collections进行数据处理?(实用方法示例)
无锡营销型网站制作公司,无锡网选车牌流程?
网站制作价目表怎么做,珍爱网婚介费用多少?
什么是javascript作用域_全局和局部作用域有什么区别?
深入理解Android中的xmlns:tools属性
Android自定义控件实现温度旋转按钮效果
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
如何在IIS管理器中快速创建并配置网站?
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
C语言设计一个闪闪的圣诞树
中国移动官方网站首页入口 中国移动官网网页登录
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
Laravel如何使用Telescope进行调试?(安装和使用教程)
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
如何在橙子建站中快速调整背景颜色?
EditPlus中的正则表达式实战(5)
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Laravel storage目录权限问题_Laravel文件写入权限设置
微信小程序 HTTPS报错整理常见问题及解决方案
如何构建满足综合性能需求的优质建站方案?

