在面試中,實現strcpy函式是乙個比較常見的考點,但是並不是每個人都能寫的完全正確:
第一種寫法:
char *my_strcpy(char *dst,const char *src)
這種寫法注意的了下面幾點:
1)指標的有效性的判斷
2)返回型別,使得呼叫引數後讓然可以作為坐直,
3)『\0\也需要複製
但是這種演算法的缺陷是,沒有考慮兩個指標的記憶體位址重疊的情況,memcpy函式實現時考慮到了記憶體重疊的情況,可以完成指定大小的記憶體拷貝
下面是第二種寫法,也是正確的寫法:
在寫程式前要注意下面幾點知識:
1)計算機一般為小端儲存,即高位元組放在高位址,,舉例說明如下:
a:int a=0x12345678;12在記憶體中的位址較高
b:對於陣列:char a="1234";需要注意的是,1的位址較低,這與陣列申請記憶體有關係。
下面寫程式:
char*strcpy(char*target,const char*s,int n)
*target= '\0';
} else }
return temp;
}
strcpy函式的實現
感謝分享!cpp view plain copy char my strcpy char dst,const char src 如果注意到 1,檢查指標有效性 2,返回目的指標des 3,源字串的末尾 0 需要拷貝。寫出上面實現函式就不在話下。然而這樣的實現沒有考慮拷貝時記憶體重疊的情況,下面的測試...
strcpy函式的實現
大家一般認為名不見經傳strcpy函式實現不是很難,流行的strcpy函式寫法是 cpp view plain copy char my strcpy char dst,const char src 如果注意到 1,檢查指標有效性 2,返回目的指標des 3,源字串的末尾 0 需要拷貝。寫出上面實現...
strcpy函式的實現
strcpy函式的實現 已知strcpy函式的原型是 char strcpy char dst,const char src 實現strcpy函式 解釋為什麼要返回char 假如考慮dst和src記憶體重疊的情況,strcpy該怎麼實現 1.strcpy的實現 char strcpy char ds...