strcpy 覆蓋拷貝
-
被拷貝的字符串必須以’\0’結束。
-
目標空間要足夠大,至少要能放的下拷貝的東西。
-
目標空間的值是可以修改,比如常量區的字符串,不能夠修改,就不能使用。
-
會將被拷貝的字符串中的’\0’拷貝到目標空間。
-
函數實現。
方法一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。