0

我有一个函数,我将一个字符指针传递给它,例如:

funtion_name (char* string){
...
}

我想将字符串复制到临时字符串变量,然后将其复制到结构中。这是我迄今为止所做的:

char* namecpy = malloc(strlen(string+1));
strcpy(namecpy, string);
strcpy(ptr->name, namecpy);

当我调用该函数时,这给了我一个分段错误。我认为这是因为我不允许直接复制到 struct 变量中......但是我还要如何复制它呢?

4

2 回答 2

1

你复制它两次,大概是第二个目标,ptr->name没有正确分配,所以它崩溃了。

你的意思是这样的:

ptr->name = malloc(strlen(string)+1);
strcpy(ptr->name, string);

目标位置分配缓冲区。除非绝对必须,否则不要乱用临时变量。

您写入的每个缓冲区都必须预先分配足够的内存。C 不会为你检查这个,它会毫不犹豫地按照你的要求做,所以就像在操作像电锯这样的危险设备时,你必须非常注意你是如何使用它的。

于 2018-10-13T01:09:20.263 回答
0

您可以将 malloc 和 strcpy 与该strdup函数结合使用。( #include <string.h>)

ptr->name = strdup(string);

完成后不要忘记调用freeptr->name。

于 2018-10-13T01:15:26.470 回答