第一次寫這個程式的時候寫的很爛,感覺從網上找的這個很好。
char *strcpynry(char *strdest, char *strsource)
但是第二次自己又寫的時候,突然發現了幾個問題:
1.源字串指標最好用const限定一下,這個是肯定正確的,而且檢視了中strcpy函式的原型:char *_cdecl strcpy ( char *_dest, const char *_source );
2.檢查傳入引數合法性用throw有好處,這個我同意;
3.感覺儲存原始的目的指標不是特別必要,因為指標本身實際上還是通過值傳遞的方式傳入的,所以呼叫函式那邊的目的指標沒有改變。不過函式中儲存原始目的指標而且返回這個目的指標,我猜可能是為了這個函式能夠巢狀呼叫,這樣更靈活;
4.對於源字串長度大於目的字串的情況,這個函式和中strcpy函式都會照樣複製,不管目的字串的容量,即:
char a = "abcd";
char b = "wrj";
strcpynry(b,a);
或strcpy(b,a);
結束之後b都是"abcd"。
自己做了乙個實驗:
char a = "abcd";
char b[4] = "wrj";
b[3] = 'a';
b[4] = 'e';
b[5] = '\0';
編譯通過,執行也沒問題。不知道是不是因為這樣,所以strcpy函式才放心大膽的統統複製了。
不過我就覺得複製過去的畢竟是未知的記憶體,能保證安全麼?
5.while((*strdest++ = *strsource++) != '\0');語句非常簡潔,贊。
自己第二次寫的類strcpy函式:
void strcpynry (char * dest, const char * scr)
}
比較一下,以知不足。 strcpy函式實現
已知strcpy函式的原型是 char strcpy char strdest,const char strsrc 不呼叫 庫函式,實現strcpy函式。解釋為什麼要返回char 解說 strcpy的實現 char strcpy char strdest,const char strsrc 錯誤的做...
實現strcpy函式
strcpy函式是字串複製函式。define crt secure no warnings include include includechar strcpy char dest,const char src dest 0 return dest int main strcpy函式編寫思想 首先要...
strcpy函式實現
題目 已知strcpy函式的原型是 char strcpy char strdest,const char strsrc 1.不呼叫庫函式,實現strcpy函式。2.解釋為什麼要返回char 解說 1.strcpy的實現 char strcpy char strdest,const char str...