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
| ville *lireVilles (FILE *fd, int *nb)
{
char buffer [256];
char *ptr = NULL;
char *delim = ";";
ville *tab = malloc (sizeof (ville));
ville *ret = NULL;
if (tab != NULL)
{
/* On conserve le pointeur du tableau, pour le retourner à la fin */
ret = tab;
*nb = 0;
while (fgets (buffer, sizeof buffer, fd) != NULL)
{
(*nb)++;
/* On réalloue une place de + */
tab = realloc (tab, *nb * sizeof (ville));
/* On fait de la place pour le nom et on le copie */
ptr = strtok (buffer, delim);
tab->nom = malloc (strlen (ptr) + 1);
strcpy (tab->nom, ptr);
/* Nombre d'habitants */
ptr = strtok (NULL, delim);
tab->population = strtoul (ptr, NULL, 10);
printf ("%s\t%u\n", tab->nom, tab->population);
}
}
/* On retourne l'adresse du tableau */
return ret;
} |
Partager