我首先在辅助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)
}
答案 0 :(得分:1)
你没有为已经malloc()
指针分配指针值,你将面对memory-leak。你必须使用strcpy()
来实现你想要的目标。
OTOH,如果你不动态分配内存,那么你可以指定像
这样的指针name = aux_name;
那就是说,
我首先在辅助字符数组中连接一系列元素
嗯,你不是。你每次迭代都只是覆盖数组。你需要做的是
sprintf()
的返回值。注意/建议:
do not cast malloc()
中C
及其家人的返回值。
sizeof(char)
保证在c标准中为1
。您不需要使用它,只需删除该部分。
答案 1 :(得分:0)
你不能这样做,而你真的不需要,这会起作用
size_t nonConstanSizeInBytes = 14;
char *name = malloc(nonConstanSizeInBytes);
snprintf(name, 13, "id_%i", i);