我的C程序中有以下结构
struct person {
char key[50];
char color[20];
int age;
};
我想对该结构进行深层复制。我已经完成了深度复制功能的设置,但是我对如何深度复制字符串有些困惑。我听说有人使用strcpy
,有人使用strdup
。
我在程序中想要的是,如果原始人被释放,则深复制人的键和颜色不会受到影响。设置后,键和颜色将无法更改。就我的目的而言,我应该使用strcpy
orstrdup
函数吗?
strcpy()
和之间有区别strdup()
。
strdup()
分配空间并返回指向字符串副本的指针,您还必须free()
指向返回的指针。
strcpy()
占用分配的空间并将字符串复制到其中。
看来,在您的情况下,这是strcpy()
因为结构的字段不是指针,所以您无法为它们分配指向分配空间的指针,该指针将strdup()
返回所分配的空间。
但是,正如此答案中所述,您实际上不需要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句