C语言中的字符串复制
我有一个传递字符指针的函数,比如:C语言中的字符串复制,c,string,malloc,strcpy,strdup,C,String,Malloc,Strcpy,Strdup,我有一个传递字符指针的函数,比如: funtion_name (char* string){ ... } 我想将字符串复制到一个临时字符串变量,然后将其复制到一个结构中。这就是我迄今为止所做的: char* namecpy = malloc(strlen(string+1)); strcpy(namecpy, string); strcpy(ptr->name, namecpy); 当我调用函数时,这给了我一个分段错误。我想这是因为我不允许直接复制到struct变量中。。。但是我还必须
funtion_name (char* string){
...
}
我想将字符串复制到一个临时字符串变量,然后将其复制到一个结构中。这就是我迄今为止所做的:
char* namecpy = malloc(strlen(string+1));
strcpy(namecpy, string);
strcpy(ptr->name, namecpy);
当我调用函数时,这给了我一个分段错误。我想这是因为我不允许直接复制到struct变量中。。。但是我还必须复制它吗?您复制了两次,可能是第二个目标ptr->name没有正确分配,所以它崩溃了 你的意思是:
ptr->name = malloc(strlen(string)+1);
strcpy(ptr->name, string);
在目标位置分配缓冲区。除非你万不得已,否则不要乱搞临时变量
您写入的每个缓冲区必须事先为其分配足够的内存。C不会帮你检查这个,它会毫不犹豫地完全按照你的要求去做,所以当你操作一个危险的设备(比如电锯)时,你必须非常注意你是如何使用它的。你可以将malloc和strcpy与strdup函数结合起来。包括
使用完ptr->name后,别忘了拨打免费电话。Strenstring+1@Deduplicatorstrdup符合SVr4、4.3BSD、POSIX.1-2001的要求。
ptr->name = strdup(string);