對於我的作業,我必須使用malloc動態創建一個字符串數組。 A我沒有真正瞭解已有的解決方案,因爲它的使用方式稍微不同於我想要的解決方案。C - 動態創建一個字符串數組(malloc)
我的問題: 所以,簡而言之:我正在製作一個基於文本的冒險遊戲。我的教授說,庫存應該是「任意大小」。如果該人沒有物品,那麼庫存的大小也應該爲零,其中1個物品只應包含1個物品等等。
我試着做一些工作,但我真的不能真正理解malloc是如何工作的,所以這裏是我的代碼(這顯然是不正確的,但是如何做到我想做的事是正確的?):
char* inventory;
int amount=0;
inventory=(char*) malloc(sizeof(char)*amount);
//NOW THERE SHOULD BE AN INVENTORY WITH SIZE ZERO SINCE AMOUNT=0
//NOW I WANT TO GIVE THE PLAYER AN ITEM:
amount++;
inventory=(char*) malloc(sizeof(char)*(amount+1);
inventory[0]="sword";
//I WANT TO WRITE OUT INVENTORY TO TEST IF IT WORKS:
printf("%s", inventory[0]);
//FREE THE BITS LOCKED WITH MALLOC:
free(inventory);
教授告訴我們,我們必須寫,因爲字符串的最後一個字符的數量+ 1必須是「\ 0」或類似的東西。
所以,這裏是我的理解是如何的malloc工程(但也許這是不是它是如何工作和我的理解不正確地): 通常情況下,這是你會如何創建的字符串,例如一個數組:
char strings[10][200];
這意味着你有10個字符串,每個字符串可以有200個字符長。 當我在我的代碼中使用malloc時: 在我的示例中,整數'amount'基本上與數字10相同,sizeof(char)與我的示例中的number 200基本相同,對嗎? 如果沒有,那麼我完全失去了。
儘管如此,我的代碼並沒有明顯的工作,所以我真的很感謝你們的幫助,如果你有時間,可以使用malloc C代碼和一些解釋。
':
我怎麼會寫(會不會深入講解)。 :) –
在C中,未知/動態長度的字符串用'char *'指向第一個字符。該指針指向由該字符串分配的內存的開始處(+尾部\ 0)。要管理一些動態字符串,你需要一些'char *',例如這些指針的數組。指針數組又是指向第一個元素的指針表示的內存空間。所以,如果你需要一個字符串數組,那麼該數組可以被聲明爲'char **',因爲它指向一個字符串的第一個指針('char *')。 – JimmyB
當我谷歌確切的問題,前8個結果都是關於這個主題的Stackoverflow問題。如果您已經查找了解決方案,但沒有找到確切的答案,請檢查這些問題,以便理解主題(使用malloc動態地創建一個字符串數組),並開發您自己的解決方案。 –