五、編寫strcpy函數(10分)
已知strcpy函數的原型是 char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字串,strSrc是源字串。
(1)不調用C++/C的字串庫函數,請編寫函數
strcpy char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while( (*strDest++ = * strSrc++) != ‘/0’ ) // 2分
NULL ;
return address ; // 2分
}
(2)strcpy能把strSrc的內容複寫到strDest,為什麼還要char * 類型的傳回值?
答:為了實現鏈式運算式。 // 2分
例如 int length = strlen( strcpy( strDest, “hello world”) );
--------------------------------------------------------------------------------------------------------------------------------
看到了這個詞:鏈式運算式,之前沒有聽過,所以去百度了一下,發現有人解釋的還算明白:
-------------------------------------------------------------------------------------------------------------------------------- http://topic.csdn.net/t/20061123/21/5180993.html 1,
就是方便一些,否則就要這樣寫:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
什麼鏈式就是一連串寫下來的意思。。。
--------------------------------------------------------------------------------------------------------------------------------
其實,說白了,就是如果上面的字串拷貝函數strcopy的傳回值是void,那麼,上面那句:
int length = strlen( strcpy( strDest, “hello world”) );
就要像上面那位的回答,寫成好幾句了:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
而這種直接返回char *的手段,就是為了後來函數調用者方便而設計的.不用你這麼麻煩用上述方法去使用了,而直接可以使用拷貝後的dest字串了.這種方便的實現方法,看起來就是鏈子鏈在一起的,所以稱為 鏈式運算式
如此而已.呵呵.
http://blog.csdn.net/yita316/article/details/4827749