我对这个函数有个小错误:
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你能帮帮我吗?非常感谢。
发布于 2014-02-19 14:55:51
您必须为u + 2而不是u + 1元素分配空间。
例如,如果u是2,则原始选项卡有3个元素(第一个、第二个、NULL),现在需要4个元素的空间。
https://stackoverflow.com/questions/21883793
复制相似问题