民间, 我对指针有基本而简单的问题。以下是代码给出了分段错误。
int main()
{
char *str = "hello, world\n";
char *strc = "good morning\n";
strcpy(strc, str);
printf("%s\n", strc);
return 0;
}
我们不能从指针复制到其他人。
答案 0 :(得分:1)
您可能无法更改字符串文字。这是你在声明中试图做的事情
strcpy(strc, str);
你正试图覆盖指针strc
指向的字符串文字“早安\ n”。
你可以在函数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;
}