簡體   English   中英

在 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 

希望這能解決你的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM