各位,
我有一个关于指针的简单问题。下面的代码给出了一个分段错误。

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/

10-13 05:53