字符串拷貝的方法和陷阱

下面我主要說說memcpy、strcpy、string::copy這三種

內存拷貝memcpy

陷阱
內存拷貝不會對字符串結束符’\0’進行檢查

結果
拷貝結束後,在字符串末尾會出現亂碼。

解決方案
申請內存時多申請一個字節內存,以保證將字符串結束符拷貝進去。

字符串拷貝strcpy

strcpy是專用於字符串拷貝的函數,與memcpy的區別就是,它會檢測結束符’\0’,所以在申請內存時不用做多餘申請。

語法/原型:
char* strcpy(char* strDestination, const char* strSource);

參數說明:
strDestination:目的字符串。
strSource:源字符串。

strcpy() 會把 strSource 指向的字符串複製到 strDestination。

必須保證 strDestination 足夠大,能夠容納下 strSource,否則會導致溢出錯誤。

string方法拷貝string::copy

陷阱&結果
因爲這裏copy最終調用的函數仍然是memcopy,所以陷阱一樣,拷貝完成後,會在字符串後面帶上一串亂碼

解決方案
在拷貝結束後,加上結束符’\0’。

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