我正在构建一个游戏,当我使用以下代码更改2d-map中的值时
char example[100];
strcpy(example, " ");
strcat(example, player1->unitName[j]);
strcat(example, " ");
map->map[x][y] = example;
Run Code Online (Sandbox Code Playgroud)
我在地图变化中用示例表示的全部值.
我想我正在把指针放到这个例子中.
有什么方法我可以只放置示例的值而不是地址或指针?
您应该为每个元素分配新缓冲区并复制这样的内容.
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;
Run Code Online (Sandbox Code Playgroud)
您可以使用strdup()它,如果它在您的系统中可用.
char example[100];
strcpy(example, " ");
strcat(example, player1->unitName[j]);
strcat(example, " ");
map->map[x][y] = strdup(example);
Run Code Online (Sandbox Code Playgroud)