自己实现strcpy
一個標準的strcpy函數(shù):
原本以為自己對strcpy還算比較了解,結(jié)果面試時還是悲劇了。
下面給出網(wǎng)上strcpy的得分版本:
2分
| void?strcpy(?char?*strDest,?char?*strSrc?) |
4分
| void?strcpy(?char?*strDest,?const?char?*strSrc?)? |
7分
| void?strcpy(char?*strDest,?const?char?*strSrc)? |
10分
| //為了實現(xiàn)鏈式操作,將目的地址返回,加3分! |
關(guān)鍵是:
為了實現(xiàn)鏈式操作,將目的地址返回
這句是個神馬回事,我的面試題就是:
strcpy函數(shù)返回值有神馬作用?
結(jié)果徹底悲劇了,尼瑪確實不知道。
先來看看微軟的代碼:
char?*?__cdecl?strcpy(char?*?dst,?const?char?*?src)
{
????????char?*?cp?=?dst;
????????while(?*cp++?=?*src++?)
????????????????;???????????????/*?Copy?src?over?dst?*/
????????return(?dst?);
}
發(fā)現(xiàn)微軟的代碼很簡單,bug一堆是吧?但是?return(?dst?);到底有神馬作用?
考慮:
int?length?=?strlen(?strcpy(str,?“Hello?World”)?);
你就能發(fā)現(xiàn)奧秘了。為了實現(xiàn)鏈式操作,將目的地址返回??原來說的就是這么一會事:
Strcpy函數(shù)可以作為另外一個函數(shù)的實參。
總結(jié)
以上是生活随笔為你收集整理的自己实现strcpy的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: B/S和C/S的区别
- 下一篇: int *ptr=(int *)(a+1