编写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;
第二问无非是为了使得在调用该函数时能赋值给某个对象;