将数组的值分配给指针

时间:2015-04-27 11:16:25

标签: c arrays pointers char segmentation-fault

我首先在辅助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)

}

2 个答案:

答案 0 :(得分:1)

你没有为已经malloc()指针分配指针值,你将面对memory-leak。你必须使用strcpy()来实现你想要的目标。

OTOH,如果你不动态分配内存,那么你可以指定像

这样的指针
name = aux_name;

那就是说,

  

我首先在辅助字符数组中连接一系列元素

嗯,你不是。你每次迭代都只是覆盖数组。你需要做的是

  1. 每次收集sprintf()的返回值。
  2. 下一次迭代,将指针缓冲到多个位置,以便在前一个输入之后 concatinate 新输入。
  3. 注意/建议:

    1. do not cast malloc()C及其家人的返回值。

    2. sizeof(char)保证在c标准中为1。您不需要使用它,只需删除该部分。

答案 1 :(得分:0)

你不能这样做,而你真的不需要,这会起作用

size_t nonConstanSizeInBytes = 14;
char *name = malloc(nonConstanSizeInBytes);

snprintf(name, 13, "id_%i", i);