我試圖爲C字符串數組分配內存。我可以保證這些字符串符合MAX_STRING_LENGTH
字符,但我不知道在編譯時數組中有多少個字符串(這是動態計算的)。當我使用代碼...如何爲任意大小的固定長度C字符串數組分配內存
char *strings[MAX_STRING_LENGTH] = malloc(sizeof(char *) * numstrings);
...編譯器抱怨說這是一個無效的初始值設定項。當我使用代碼...
char strings[MAX_STRING_LENGTH][] = malloc(sizeof(char *) * numstrings);
...編譯器抱怨一個不完整的元素類型。我在這裏做錯了什麼,以及如何爲這個數組分配內存?
當然,我總是可以爲char **分配內存,然後迭代併爲每個字符串分配一個char *,但這是我試圖避免的迭代和分配。 – 2012-07-24 17:55:25
哦,所以你事先知道了字符串的數量(即在分配之前)。然後,只需創建一個'char **'並按照你所說的迭代。 – houbysoft 2012-07-24 17:57:32
@houbysoft通過「預先」我的意思是在編譯時。我相應地更新了這個問題。 – 2012-07-24 18:05:47