将指针字符串复制到其他指针

时间:2014-11-19 19:55:39

标签: c

民间,    我对指针有基本而简单的问题。以下是代码给出了分段错误。

int main()

{

    char *str = "hello, world\n";

    char *strc = "good morning\n";

    strcpy(strc, str);

    printf("%s\n", strc);

    return 0;

}

我们不能从指针复制到其他人。

  1. 如果我有char * strc ="早上好\ n",我不能这样做 strc [5] ='。';为什么这也给出了一个段错误。

1 个答案:

答案 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;
}