我實現了一個簡單的strcpy,但是當我運行它時,它總會給出分段錯誤。 請幫忙!爲什麼在執行strcpy時出現分段錯誤?
下面是我的代碼:
#include <stdio.h>
char* mystrcpy(char *dst, char *src){
char *ptr = dst;
while (*src !='\0') {
*dst = *src;
dst++;
src++;
}
return ptr;
}
int main (int argc, char **argv) {
char *str1 = "abc";
char *str2 = "def";
char *str3 = NULL;
str3 = mystrcpy(str2, str1);
printf("str2 now is %s", str2);
printf("str3 is %s", str3);
return 0;
}
在'str1'和'str2'中沒有空間存儲字符串內容。嘗試'char str1 [100] =「abc」'和'char str2 [100] =「def」'和'char str3 [100] =「」' – Stan
另請注意,標準'strcpy' null終止目標。你可能希望你也這樣做。 –
你可以把這個循環寫成'while(* src)* dst ++ = * srC++;'這個事實被很多人認爲是C的最大優點之一。我明白這樣的代碼會讓新手感到恐慌,但對於我們來說,盯着這樣的代碼很多很多年,它的密集度就像簡單而純粹的美麗。還要注意Charles所說的。 「do ... while」循環會更好。 – sbi