I've got a little bug with this function:
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);
}
It's called from main()
like this:
tab = addtotab(tab, line)
My problem is that tab
has the wrong data at the end of the program. tab[0]
is ALWAYS empty.
For example, I initialize tab
with this data:
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
but I got this result
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
Can you help me? Many thanks.