c++中拷贝字符串标准写法实例详解

  

<强>拷贝字符串标准写法

  

实例代码:

     //CppReference。cpp:定义控制台应用程序的入口点。//# include“stdafx.h”   使用名称空间性病;/*   *说明:字符串拷贝版1本   *参数:桌子目标地址,src源地址   *返回:返回拷贝好的地址;如果出错或者有重叠,无定义   *异常:可能出现字符串溢出,及桌子所占空间不如src所占空间大。   */char * strcpy_v1 (char *桌子,const char * src)   {//调试时,使用断言,入口检测   断言((桌子!=NULL),,(src !=NULL));//注意这里的内存指向参数桌子所在的内存,不是栈内存,因而可以在函数中返回   char *=桌子;//主要操作在当条件中完成   在((*桌子+ +=* src + +) !=' \ 0 ')   {   零;   }//返回拷贝字符串首地址,方便连缀,比如strlen(拷贝字符串(桌子,“你好”))   返回;   }/*   *说明:字符串拷贝版2本   *参数:桌子目标地址,src源地址   *返回:返回拷贝好的地址;如果出错,无定义   *异常:可能出现字符串溢出,及桌子所占空间不如src所占空间大。   */char * strcpy_v2 (char *桌子,const char * src)   {   char * d=桌子;   字符c;      在((c=* src + +) !=' \ 0 ')   {   *(桌子+ +)=c;   }      * dest=' \ 0 ';      返回d;   }/*   *说明:字符串拷贝版2本(你能找出错误的原因吗)   *参数:桌子目标地址,src源地址   *返回:返回拷贝好的地址;如果出错,无定义   *异常:可能出现字符串溢出,及桌子所占空间不如src所占空间大。   */char * strcpy_v2_error (char *桌子,const char * src)   {   char * d=桌子;   字符c;      在((c=* src + +) !=' \ 0 ')   {   * (d + +)=c;   }      * d=' \ 0 ';      返回d;   }/*   *说明:字符串拷贝版3本   *参数:桌子目标地址,src源地址   *返回:返回拷贝好的地址;如果出错,无定义   *异常:可能出现字符串溢出,及桌子所占空间不如src所占空间大。   */char * strcpy_v3 (char *桌子,const char * src)   {   char * d=桌子;   字符c;      而(* src)   *桌子+ +=* src + +;      * dest=' \ 0 ';      返回d;   }/*   *说明:字符串拷贝版本4   *参数:桌子目标地址,src源地址   *返回:返回拷贝好的地址;如果出错,无定义   *异常:可能出现字符串溢出,及桌子所占空间不如src所占空间大。   */char * strcpy_v4 (char *桌子,const char * src)   {   char * d=桌子;   字符c;      在((* dest=* src) !=' \ 0 ')   {   src + +;   桌子+ +;   }      * dest=' \ 0 ';      返回d;   }/*   *说明:字符串拷贝版5本   *参数:桌子目标地址,src源地址   *返回:返回拷贝好的地址;如果出错,无定义   *异常:可能出现字符串溢出,及桌子所占空间不如src所占空间大.restrict关键字限定字符串不能重叠。   */char * strcpy_v5 (char * _restrict桌子,const char * _restrict src)   {   char * d=桌子;   字符c;      在((* dest=* src) !=' \ 0 ')   {   src + +;   桌子+ +;   }      * dest=' \ 0 ';      返回d;   }/*   *说明:字符串拷贝版本6   *参数:桌子目标地址,src源地址   *返回:返回拷贝好的地址;如果出错,无定义   *异常:可能出现字符串溢出,及桌子所占空间不如src所占空间大.restrict关键字限定字符串不能重叠。   */char * strcpy_v6 (char * _restrict桌子,const char * _restrict src)   {   char * d=桌子;   字符c;      而(*桌子+ +=* src + +);   返回d;   }            int _tmain (int命令行参数个数,_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));      使用strcpy_v1 printf(",字符串“Hello, World”\ ' s长度是:% d \ n”, strlen (strcpy_v1 (buf“Hello, World”)));      使用strcpy_v2 printf(",字符串“这是最好的时代”\“长度是:% d \ n”, strlen (strcpy_v2 (buf2,“这是最好的时代”)));      使用strcpy_v2 printf(",字符串“这是最好的时代”\“长度是:% d \ n”, strlen (strcpy_v2_error (buf2,“这是最好的时代”)));      使用strcpy_v3 printf(",字符串“这是最好的时代”\“长度是:% d \ n”, strlen (strcpy_v3 (buf3,“这是最好的时代”)));      使用strcpy_v5 printf(",字符串“这是最好的时代”\“长度是:% d \ n”, strlen (strcpy_v5 (buf5,“这是最好的时代”)));      使用strcpy_v6 printf(",字符串“这是最好的时代”\“长度是:% d \ n”, strlen (strcpy_v6 (buf6,“这是最好的时代”)));      系统(“暂停”);      返回0;   }      

c++中拷贝字符串标准写法实例详解