我正在构建游戏,当我使用以下代码更改2d-map中的值时
char example[100];
strcpy(example, " ");
strcat(example, player1->unitName[j]);
strcat(example, " ");
map->map[x][y] = example;
我在地图更改中添加了示例的全部值。
我想我正在把指针放到示例中。
我有什么方法可以只使用示例的值而不是地址或指针?
答案 0 :(得分:5)
你应该为每个元素分配新的缓冲区,并像这样复制内容。
char example[100], *buffer;
strcpy(example, " ");
strcat(example, player1->unitName[j]);
strcat(example, " ");
buffer = malloc(strlen(example) + 1); /* +1 for terminating null-character */
if (buffer != NULL) {
strcpy(buffer, example);
} else {
/* handle error */
}
map->map[x][y] = buffer;
如果您的系统中有strdup()
,则可以使用https://www.w3.org/TR/REC-html40/struct/links.html#adef-charset。
char example[100];
strcpy(example, " ");
strcat(example, player1->unitName[j]);
strcat(example, " ");
map->map[x][y] = strdup(example);