给C中的结构赋值

Assign value to struct in C

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

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

我在地图中添加示例的所有值都发生了变化。

我想我正在将指针指向示例。

有什么办法可以只输入示例的值而不是地址或指针吗?

您应该为每个元素分配新的缓冲区并像这样复制内容。

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()

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