我首先在辅助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。您不需要使用它,只需删除该部分。

10-06 15:07
查看更多