淺談strcpy()實現

strcpy 覆蓋拷貝

  1. 被拷貝的字符串必須以’\0’結束。

  2. 目標空間要足夠大,至少要能放的下拷貝的東西。

  3. 目標空間的值是可以修改,比如常量區的字符串,不能夠修改,就不能使用。

  4. 會將被拷貝的字符串中的’\0’拷貝到目標空間。

  5. 函數實現。
    方法一

     char* my_strcpy(char* dst, const char* src)
     {
     	const ret = dst;
     	while (*src)
     	{
     		*dst = *src;
     		dst++;
     		src++;
     	}
     	*dst = '\0';
     	return ret;
     }
    

       ret記錄字符串的首地址,將函數的返回值設置成爲一個char*,是爲了在調用函數的時候可以像my_strcpy(str1, my_strcpy(str1, p1));這樣嵌套,由於strcpy拷貝是拷貝’\0’的,因此在最後,我們需要吧*dst最後所指向的內容改爲’\0’。
    方法二

     char* my_strcpy(char* dst, const char* src)
     {
     	const ret = dst;
     	//先賦值,再判斷,只要不是\0,代碼就繼續
     	while (*dst++ = *src++);
     	return ret;
     }		
    

      方法二就相對方法一進行了簡化,採用前置++的方式,前置++的優先級高於*,因此沒循環一次,指針向後移一下,再將src的值賦給dst。

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