1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| char **tab;
int i = 0;
char ligne[256];
int taille = 10;
if ((tab = malloc(taille * sizeof(*tab))) == NULL)
return 1;
while(fgets(ligne,sizeof ligne,flot) !=NULL)
{
// on elimine le '\n';
char *p = strchr(ligne, '\n');
if (p == NULL)
{
// problème ton buffer de lecture est trop petit
}
else
*p = 0;
tab[i] = malloc(strlen(ligne)+1);
if(tab[i] == NULL)
return 2;
strcpy(tab[i],ligne);
i++;
if( i == taille)
{
char **tmp;
// on double la taille du tableau
taille *= 2;
tmp = realloc(tab, taille * sizeof(*tab));
if (tmp == NULL)
{
// tu l'as dans l'os mais tu conserves quand même
// l'ancienne valeur du tableau
// a toi de voir ce que tu veux faire
}
else
tab = tmp;
}
} |