我建立一個遊戲,當我使用下面的代碼值分配給結構用C
char example[100];
strcpy(example, " ");
strcat(example, player1->unitName[j]);
strcat(example, " ");
map->map[x][y] = example;
我把用例中的地圖改變了整個價值觀改變的2D地圖的價值。
我想我把指針指向這個例子。
有沒有什麼辦法可以把例子的值不是地址或指針?
我建立一個遊戲,當我使用下面的代碼值分配給結構用C
char example[100];
strcpy(example, " ");
strcat(example, player1->unitName[j]);
strcat(example, " ");
map->map[x][y] = example;
我把用例中的地圖改變了整個價值觀改變的2D地圖的價值。
我想我把指針指向這個例子。
有沒有什麼辦法可以把例子的值不是地址或指針?
您應該爲每個元素分配新緩衝區並像這樣複製內容。
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);
+1。不要忘記釋放內存。另一個例子是有一個三維數組:map-> map [x] [y] [100] =「誰是你的爸爸?」;'。但是,當然,由於內存浪費,這被認爲是不好的做法。 –
@AndrejsCainikovs不知道實際的定義,你的例子看起來像執行超出範圍的訪問和無意義的指針到整數轉換。它不應該是'strcpy(地圖 - >地圖[x] [y],「誰是你的爸爸?」);'? – MikeCAT
糟糕。道歉。工作中太多的Python。開始搞砸:) –
分配緩衝區並將內容複製到它。如果可用,'strdup()'將很方便。 – MikeCAT
你能告訴我如何在這種情況下使用strdup()..謝謝! – Lebanner