给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);
我正在构建游戏,当我使用以下代码更改 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);