使用指针在C中复制字符串
我是一个初学者程序员。我编写了以下代码,使用指针将一个字符串复制到另一个字符串中。 但是我没有得到输出。编译器说是分段错误。 我一遍又一遍地看这个节目,但都没用。我无法定位故障以及如何修复它。 很难相信,我已经被困了将近两个小时了。 非常感谢您的帮助使用指针在C中复制字符串,c,string,pointers,C,String,Pointers,我是一个初学者程序员。我编写了以下代码,使用指针将一个字符串复制到另一个字符串中。 但是我没有得到输出。编译器说是分段错误。 我一遍又一遍地看这个节目,但都没用。我无法定位故障以及如何修复它。 很难相信,我已经被困了将近两个小时了。 非常感谢您的帮助 #include<stdio.h> char *copy(char*, char*); int main() { char *str1 = "avanti"; char *str2 = "ujj"; pri
#include<stdio.h>
char *copy(char*, char*);
int main() {
char *str1 = "avanti";
char *str2 = "ujj";
printf("%s\n", str1);
char *result = copy(str1, str2);
printf("%s", result);
}
char *copy(char *str1, char *str2){
int i=0;
while (*(str2+i) != '\0') {
*(str1+i) = *(str2+i);
i++;
}
*(str1+i) = '\0';
return str1;
}
#包括
字符*复制(字符*,字符*);
int main(){
char*str1=“avanti”;
char*str2=“ujj”;
printf(“%s\n”,str1);
char*result=copy(str1,str2);
printf(“%s”,结果);
}
字符*副本(字符*str1,字符*str2){
int i=0;
而(*(str2+i)!='\0'){
*(str1+i)=*(str2+i);
i++;
}
*(str1+i)='\0';
返回str1;
}
“avanti”
是一个字符串常量,不能复制到其中。您可以将其更改为char str1[]=“avanti”代码>这是一个用字符串常量值初始化的字符数组“avanti”
,尤其是在执行第一步时,请随意使用常量。请说出你的名字src
和dest
beatstr1
和str2
任何时间。请注意,使用char str1[]=“avanti”代码>可以,因为它比您复制到其中的内容长。如果您有char*str2=“alphabet”代码>,即使使用数组也会有问题-缓冲区溢出。另外,使用str2[i]!='\0’
比*(str2+i)!=”更容易阅读\0'
-这两者在效率上没有差别。@JonathanLeffler关于你的第二点,这个问题看起来像是理解语法的练习,所以只使用*
s似乎是合理的,本身不值得批评,尽管数组语法是很好的补充信息