在C中为struct赋值

时间:2016-06-07 16:45:06

标签: c struct strcpy

我正在构建游戏,当我使用以下代码更改2d-map中的值时

char example[100];
strcpy(example, " ");
strcat(example, player1->unitName[j]);
strcat(example, " ");
map->map[x][y] = example;

我在地图更改中添加了示例的全部值。

我想我正在把指针放到示例中。

我有什么方法可以只使用示例的值而不是地址或指针?

1 个答案:

答案 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);