<强>拷贝字符串标准写法强>
实例代码:
//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++中拷贝字符串标准写法实例详解