如果采取数组它会没事,但因为我使用* str1和str2它不起作用
#include <stdio.h>
void copystr(char* ,char*);
int main()
{
char *str1="xxx";
char *str2= "yyy";
copystr(str1, str2);
printf("\n %s",str2);
}
void copystr(char *dest,char *src)
{
while(*src!='\0')
*dest++=*src++;
*dest='\0';
return;
}
答案 0 :(得分:1)
char *str = "some string"
这里str是一个指向常量内存的指针,它不能被编辑并导致未定义的行为。
但如果你宣布像
那样char str2[] = "some string"
现在上面的str2指向一个非常量且可以更改的内存。这样就行了。
此处有更多解释: char *array and char array[]
答案 1 :(得分:0)
目标字符串str1
是字符串文字。字符串文字是不可修改的。任何修改它的尝试都将调用undefined behavior。