我需要一個字符串數組,其中在編譯時不知道數組的長度。我所做的是:動態調整字符串數組的大小
char **words;
words = malloc(capacity * sizeof(char *));
char nextword[MAX_LEN + 1];
while (true) {
if (num_entries == capacity) {
capacity += 5;
realloc(words, (sizeof(char *) * capacity));
}
printf("\nEnter a word: ");
fgets (nextword, MAX_LEN, stdin);
remove_newline(nextword);
if (strlen(nextword) == 0) break;
words[num_entries] = malloc(strlen(nextword + 1));
if (words[num_entries] == NULL) {
printf("\nout of space\n");
break;
}
strcpy(words[num_entries], nextword);
num_entries++;
這似乎工作,一旦擴大規模,但擴容後的第一個元素已經成爲NULL
出於某種原因。第二次realloc
執行我得到一個錯誤:
"invalid next size"
.
感謝您的鏈接。它非常有幫助。 – Wcrousse
鏈接很好,但是在計算器中,如果鏈接不再工作,則需要直接在此處顯示解決方案。 –
@YohanObadia代碼不是必需的,只要解釋足以找出問題所在。解決方法是通過解釋問題所在(我的意思是「realloc不會修改您傳遞給它的值」部分)。 – dasblinkenlight