我写了一些如下的C程序。

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

 main() {
   char *s1 = "hello world!" ;
   char *sto = "it's original string" ;
   //copy
   strcpy( sto, s1 ) ;

   printf( "%s", sto ) ;

 }

是的,有很多文章涉及这个主题。我读了每一篇文章。所以我发现没有初始化变量会导致错误。

但是,我认为这段代码没有错误,因为sto变量已经被初始化为“it's ~~ bla bla”的值。

我是关于c的新人,请对我好一点。谢谢。

最佳答案

在C语言中,您必须管理存储字符串的内存。

字符串文字(例如"This is a string")存储在只读存储器中。

您无法更改其内容。

但是,您可以编写如下内容:

main()
{
  char *s1 = "hello world!" ;

  // This will allocate 100 bytes on the stack. You can use it up until the function returns.
  char sto[100] = "it's original string" ;
  //copy
  strcpy( sto, s1 ) ;

  printf( "%s", sto ) ;
}

10-07 16:45