字符串的操作

strcpy,sprintf,memcpy的區別
 對於字符串拷貝來說,其實現的效率和使用的方便程度不同:

strcpy 無疑是最合適的選擇:效率高且調用方便。

snprintf 要額外指定格式符並且進行格式轉化,麻煩且效率不高。

memcpy 雖然高效,但是需要額外提供拷貝的內存長度這一參數,易錯且使用不便;並且如果長度指定過大的話(最優長度是源字符串長度 + 1),還會帶來性能的下降。其實 strcpy 函數一般是在內部調用 memcpy 函數或者用匯編直接實現的,以達到高效的目的。因此,使用 memcpy 和 strcpy 拷貝字符串在性能上應該沒有什麼大的差別。
 對於非字符串類型的數據的複製來說,strcpy 和 snprintf 一般就無能爲力了,而memcpy 在此處比較適用
 
 

注意:

strcpy和memcpy功能上也有些差別:
比如:
const char *str1="abc/0def";
char str2[7];

首先用strcpy實現:
strcpy(str2,str1)
得到結果:str2="abc";也就是說,strcpy是以'/0'爲結束標誌的。


再用memcpy實現:
memset(str2,7);
memcpy(str2,str1,7);
得到結果:str2="abc/0def";
也就是說,memcpy是對內存區域的複製。當然,不僅能夠複製字符串數組,而且能夠複製整型數組等其他數組。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章