如何字符串拷貝函數(shù)的幾種方法,你猜哪個(gè)效率高?
作者: 土豆居士
strcpy,即string copy(字符串復(fù)制)的縮寫。是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中實(shí)現(xiàn)字符串拷貝的一個(gè)函數(shù)。各大公司筆試題最喜歡考的一道題,快來(lái)看看,你會(huì)幾種方法?
strcpy,即string copy(字符串復(fù)制)的縮寫。
是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中實(shí)現(xiàn)字符串拷貝的一個(gè)函數(shù)。
各大公司筆試題最喜歡考的一道題,快來(lái)看看,你會(huì)幾種方法?
問(wèn):你會(huì)如何實(shí)現(xiàn)這個(gè)函數(shù)呢?
1.
- void strcpy(char *strDest, char *strSrc){
- while( (*strDest++ = *strSrc++) != '\0' );
- }
2.
- //將源字符串 strSrrc加const,表明其為常量輸入?yún)?shù)
- void strcpy(char *strDest, const char *strSrc){
- while( (*strDest++ = *strSrc++) != '\0' );
- }
3
- void strcpy(char *strDest, const char *strSrc){
- //對(duì)源地址strSrc和目標(biāo)地址strDest加非NULL(0)斷言
- assert( (strDest != NULL) && (strSrc != NULL) );
- while( (*strDest++ = *strSrc++) != '\0' );
- }
4
- //為了實(shí)現(xiàn)鏈?zhǔn)讲僮?,將目的地址返?nbsp;
- char* strcpy(char *strDest, const char *strSrc){
- assert( (strDest != NULL) && (strSrc != NULL) );
- char *address = strDest;
- while( (*strDest++ = *strSrc++) != '\0' );
- return address;
- }
5
- .text
- mystrcopy:
- LDRB r2, [r1], #1
- STRB r2, [r0], #1
- CMP r2, #0
- BNE mystrcopy
- MOV pc, lr
本文轉(zhuǎn)載自微信公眾號(hào)「一口Linux」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系一口Linux公眾號(hào)。
責(zé)任編輯:武曉燕
來(lái)源:
一口Linux