我首先在辅助char
数组中串联一系列元素,然后将串联的数组分配给指针。将这个char
数组分配给指针时会出现问题,在指针中会产生分段错误。
我的方法如下:
char aux_name [12];
char * name = (char *) malloc(sizeof(char)*13);
int i;
for(i = 0; i < 5; i++){
sprintf(aux_name, "id_%i", i);
*name = (void *) (intptr_t) aux_name; //Conflict line
//Do something with variable name (it is required a pointer)
}
最佳答案
您无需将指针值分配给已经malloc()
-ed的指针,在那里您将面对memory-leak。您必须使用strcpy()
来实现所需的功能。
OTOH,如果您不动态分配内存,则可以像
name = aux_name;
那就是
我首先在辅助char数组中串联一系列元素
好吧,你不是。您只需在每次迭代中每次都覆盖数组。您需要做的是
每次收集
sprintf()
的返回值。在下一次迭代中,将指针前进到缓冲区那么多位置,以在前一个输入之后隐含新输入。
注意/建议:
do not cast
malloc()
的返回值和C
中的family。保证
sizeof(char)
在c标准中为1
。您不需要使用它,只需删除该部分。