编写strcpy 函数
来源:百度知道 编辑:UC知道 时间:2024/06/14 06:02:23
char *strcpy(char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
(1)不调用C++/C 的字符串库函数,请编写函数 strcpy
(2)strcpy 能把strSrc 的内容复制到strDest,为什么还要char * 类型的返回值?
回答者: ivaniren - 高级魔法师 七级 回答的有个问题:
没有对传入参数strDest和strSrc进行检查,一但它们中有一个为NULL,立死!
strcpy函数
C语言标准库函数strcpy,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间。
典型实现:
/**********************
*C语言标准库函数strcpy的一种典型的工业级的最简实现
*返回值:目标串的地址。
*对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
*参数:des为目标字符串,source为原字符串
*/
char* strcpy(char* des,const char* source)
{
char* r=des;
while((*(des++)=*(source++))!='\0');
return r;
}
/*while((*des++=*source++));的解释:赋值表达式返回左操作数,所以在赋值NULL后,循环停止*/
应用实例:
已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);
⒈strcpy的实现代码
char * strcpy(char * strDest,const char * strSrc)
{
if ((NULL==strDest) || (NULL==strSrc)) //[1]
throw "Invalid argument(s)"; //[2]
char * strDestCopy = strDest; //[3]
while ((*strDest++=*strSrc++)!='\0'); //[4]
return strDestCopy;
}
#include <stdio.h>
#i