全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++ 中strcpy标准写法实例详解

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 


相关文章: php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  沈阳制作网站公司排名,沈阳装饰协会官方网站?  建站之星微信建站一键生成小程序+多端营销系统  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  TestNG的testng.xml配置文件怎么写  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何快速搭建高效简练网站?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  利用JavaScript实现拖拽改变元素大小  设计网站制作公司有哪些,制作网页教程?  中山网站推广排名,中山信息港登录入口?  如何安全更换建站之星模板并保留数据?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何在阿里云虚拟主机上快速搭建个人网站?  网站制作免费,什么网站能看正片电影?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何选择高效响应式自助建站源码系统?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  香港服务器部署网站为何提示未备案?  如何快速上传建站程序避免常见错误?  如何高效生成建站之星成品网站源码?  企业微网站怎么做,公司网站和公众号有什么区别?  郑州企业网站制作公司,郑州招聘网站有哪些?  如何在阿里云ECS服务器部署织梦CMS网站?  定制建站如何定义?其核心优势是什么?  深圳网站制作平台,深圳市做网站好的公司有哪些?  香港网站服务器数量如何影响SEO优化效果?  建站之星安装模板失败:服务器环境不兼容?  如何快速生成可下载的建站源码工具?  建站之星展会模版如何一键下载生成?  如何在阿里云香港服务器快速搭建网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  网站制作企业,网站的banner和导航栏是指什么?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何快速搭建FTP站点实现文件共享?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何在橙子建站上传落地页?操作指南详解  宝塔建站教程:一键部署配置流程与SEO优化实战指南  宝塔新建站点为何无法访问?如何排查?  建站之星logo尺寸如何设置最合适?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  建站之星后台密码如何安全设置与找回?  如何选择CMS系统实现快速建站与SEO优化?  ,柠檬视频怎样兑换vip?  如何自定义建站之星模板颜色并下载新样式?  盐城做公司网站,江苏电子版退休证办理流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。