字符串指针的副本

Syn*_*ror 7 c string pointers

我有一个函数,它具有输入和指向C中char数组的指针.在该函数中我正在操作主字符串,但是我想在使用它之前在另一个变量中制作备份副本.我想把它放在char backup [2000]中,所以如果指针改变,备份就不会改变.我怎样才能做到这一点?

wal*_*lyk 11

void function (const char *string)
{
   char *stringcopy = malloc (1 + strlen (string));
   if (stringcopy)
       strcpy (stringcopy, string);
   else  fprintf (stderr, "malloc failure!"):
   ...
   do whatever needs to be done with `stringcopy`
}
Run Code Online (Sandbox Code Playgroud)

  • POSIX提供了strdup,它为你做malloc和strcpy. (4认同)

jde*_*aan 9

要在C中复制字符串,有一个名为strdupmade 的库函数:

strdup使用后必须释放分配的内存free.

strdup一步提供内存分配和字符串复制操作.如果在某个时间点要复制的字符串恰好大于数组的大小,则使用char数组会成为问题.

  • 好吧,但也许这是一个更好的选择,他没有想到他是否已经要求像复制字符串一样基本的东西.接受的答案做了类似的事情. (3认同)
  • @Andy OP甚至不是C纸尿裤,也不知道最好的解决方案是什么.这是您应该学习的基本规则:对解决方案的要求通常包括过早的设计,而不是要求.始终确保客户提供后者,而不是前者. (3认同)