各位,
我有一个关于指针的简单问题。下面的代码给出了一个分段错误。
int main()
{
char *str = "hello, world\n";
char *strc = "good morning\n";
strcpy(strc, str);
printf("%s\n", strc);
return 0;
}
我们不能从指针复制到另一个指针吗。
如果我有char*strc=“早上好\n”,我就不能这样做吗
strc[5]='.';。为什么这也给了seg错误。
最佳答案
不能更改字符串文本。这就是你在声明中要做的
strcpy(strc, str);
这是您试图覆盖指针指向的字符串文本“早安”。
你可以在strcpy函数中使用指针。有效代码可以是
#include <stdio.h>
#include <string.h>
int main()
{
char *str = "hello, world\n";
char strc[] = "good morning\n";
strcpy(strc, str);
printf("%s\n", strc);
return 0;
}
或者
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *str = "hello, world\n";
char *strc = malloc( 14 * sizeof( char ) );
strcpy( strc, "good morning\n" );
//...
strcpy(strc, str);
printf("%s\n", strc);
free( strc );
return 0;
}
关于c - 将指针字符串复制到其他指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27025812/