strcpy函數用法


字符串是數組類型,不能通過賦值運算進行,要通過strcpy進行拷貝,其中目的字符串必須是字符串變量,源字符串可以是常量,復制后源字符串保持不變。

strcpy()是C中的一個復制字符串的庫函數,在C++中現在編譯器要求使用strcpy_s(),提高安全性,效果是一樣的,只是防止源串的長度比目的串的長度大,導致最終的內存越界

函數聲明及實現代碼:

char* strcpy(char*dst, const char*src)
char* strcpy(char*dst, const char *src)
{
	if ((dst == NULL) || (src == NULL))
		return NULL;
	char *ret = dst;  //[1]
	while ((*dst ++= *src++) != '\0');   //[2]
		return ret;   //[3]
}

1)const 修飾:源字符串參數用const修飾,防止修改源字符串;

(2)空指針檢查:源指針和目的指針都有可能會出現空指針的情況,所以應該對其進行檢查;

(3)為什么要設置ret 指針以及返回ret指針的位置[3],由於目的指針dst已經在進行移動了,所以用輔助指針ret表明首指針;

(4)以上所示[2]處,為簡單的字符串的復制過程,正好表明strcpy函數遇到'\0'將會停止;
(5) [3]處返回指針類型,是因為可以連續賦值,作為左值

在C++中strcpy運行時,會提示不安全,要想實現同樣的功能,需要自己把該功能換一個名字實現相同的代碼,調用strcpy_s時(第二個參數,為字符串dst的長度),類似於賦值,直接把目的字符串的換成了源字符串,目的字符串后面的字符無法再通過數組下標獲取到,這點很奇怪,不知道是哪里出了問題?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM