1.不使用原始函式庫,請實現strcpy函數
2.解釋為什麼要返回char* -->其實我還是不知道為何要return? 沒return也可以run說...
以下收集幾種"寫"法,目前我的程度還沒辦法明確告訴您哪一個最"好",但都可以執行,請自行參考:
寫法一(網路上最常看到的)
char* strcpy(char* strDest,const char* strSrc)
{
if((strDest == NULL) || (strSrc == NULL)) //[1]
throw "Invalid Arguments"; //[2]
char* strDestCopy = strDest; //[3]
while((*strDest++ = *strSrc++) != '\0')//[4]
;
return strDestCopy;
}
這裡要注意[4]前面的 \0,大部分轉貼的都是寫/0,會有warning並沒辦法執行。(害我try了一陣子)寫法二(Wiki)
http://zh.wikipedia.org/wiki/Strcpy
char *strcpy(char *dest, const char *src)
{
const char *p;
char *q;
for(p = src, q = dest; *p != '\0'; p++, q++)
*q = *p;
*q = '\0';
return dest;
}
寫法三(某部落客)
http://vijayinterviewquestions.blogspot.tw/2007/07/implement-strcpy-function.html
char *mystrcpy(char *dst, const char *src)
{
char *ptr;
ptr = dst;
while(*dst++=*src++);
return(ptr);
}
orchar *my_strcpy(char dest[], const char source[])
{
int i = 0;
while (source[i] != '\0')
{
dest[i] = source[i];
i++;
}
dest[i] = '\0';
return(dest);
}
大同小異囉~ 大家參考參考~
作者已經移除這則留言。
回覆刪除got it!
刪除