在 C 中的字符串指针中使用 strcpy()

Use of strcpy() in pointers to string in C

我正在尝试将 strcpy() 与指向字符串的指针一起使用,并且在成功编译后 运行 它给出了错误。我不知道为什么会这样。

int main()
    {
         char *s1="abcd";
         char *s2="efgh";

         strcpy(s2,s1);

         printf("%s\n", s1);
         printf("%s\n",s2);

         getch();
    }

这些是字符串文字,您不能修改它们,因为它们存储在只读内存中。

如果您想更改此设置以便修改它们,请使用 char s[]。这会将字符串存储在堆栈中:

         char s1[] = "abcd";
         char s2[] = "efgh";

如果您想要指向这些的指针,只需创建指针:

         char *p1 = s1;
         char *p2 = s2;

或者您可以使用 C99 中的复合文字创建它们:

         char *p1 = (char []){"abcd"};
         char *p2 = (char []){"efgh"};

将字符串放入堆栈的完整程序:

int main(void)
{
     char s1[] = "abcd";
     char s2[] = "efgh";

     strcpy(s2, s1);

     printf("%s\n", s1);
     printf("%s\n", s2);

     getchar();
}

输出:

abcd
abcd

您正在尝试将所有内容从第一个指针字符串复制到第二个指针字符串,那么我建议您使用 malloc

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char** argv) {

      char *s1 ="abcd";
      char *s2 ="efgh";

      s2 = (char *) malloc(1 + strlen(s1));

      strcpy(s2, s1);

      printf("%s\n", s1);
      printf("%s\n", s2);

      return 0;
}
output -:abcd                                                                                                                
         abcd 

希望这能解决您的问题