我实现了一个简单的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