编写strcpy函数

面试题里面有这么一个问题:

  已知strcpy函数的原型是
  char *strcpy(char *strDest, const char *strSrc);
  其中strDest是目的字符串,strSrc是源字符串。
  (1)不调用C++/C的字符串库函数,请编写函数 strcpy
  (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?

第一问可以这么写:

char* str(char* strDest,char* strSrc)
{
    char* strDestCopy=strDest;
    while((*strDest++=*strSrc++)!='\0');
    return strDestCopy;
}

第二问的答案是:为了实现链式表达式;

这里解释一下这两问答案:

第一问:

while((*strDest++=*strSrc++)!='\0');这句话的原型应该是:
while(strSrc!='\0')
{
    *strDest=*strSrc;
    strDest++;
    strSrc++;
}
*strDest=*strSrc;

第二问无非是为了使得在调用该函数时能赋值给某个对象;

posted on 2012-05-18 18:21  _Clarence  阅读(615)  评论(0编辑  收藏  举报

导航