我已經有了這個功能,一個小錯誤:錯誤複製的字符串數組用C
char **addtotab(char **tab, char *newline) {
int u;
char **new;
u = 0;
while (tab[u])
u++;
if ((new = (char **)malloc(sizeof(char *) * (u + 2))) == NULL)
return (NULL);
u = 0;
while (tab[u]) {
new[u] = strdup(tab[u]);
u++;
}
new[u] = strdup(newline);
new[u + 1] = NULL;
u = 0;
while (tab[u]) {
free(tab[u]);
u++;
}
free(tab);
return (new);
}
它從main()
這樣調用:
tab = addtotab(tab, line)
我的問題是tab
有程序結束時錯誤的數據。 tab[0]
總是空的。
例如,我初始化tab
與此數據:
Alii summum decus in carruchis solito altioribus
Et quia Montius inter dilancinantium manus
Restabat ut Caesar post haec properaret accitus et
Siquis enim militarium vel honoratorum aut nobilis
Et olim licet otiosae sint tribus pacataeque
Ut enim quisque sibi plurimum confidit et ut
Sed laeditur hic coetuum magnificus splendor
Etenim si attendere diligenter, existimare vere de
Denique Antiochensis ordinis vertices sub uno
Post quorum necem nihilo lenius ferociens Gallus
,但我得到這個結果
Empty
Et quia Montius inter dilancinantium manus
Restabat ut Caesar post haec properaret accitus et
Siquis enim militarium vel honoratorum aut nobilis
Et olim licet otiosae sint tribus pacataeque
Ut enim quisque sibi plurimum confidit et ut
Sed laeditur hic coetuum magnificus splendor
Etenim si attendere diligenter, existimare vere de
Denique Antiochensis ordinis vertices sub uno
Post quorum necem nihilo lenius ferociens Gallus
你能幫助我嗎?非常感謝。
[請不要在C]中輸入'malloc()'的返回值(http://stackoverflow.com/a/605858/28169)。這不是問題的原因,而是一個友好的提示。 – unwind
嘿嘿,學校反射(尊重...「)」 – oxmolol
我回滾了你最近的編輯。指出問題解決的方法是接受一個答案(你已經完成了),而不是爲標題添加「已解決」。 –