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
| // nb est la première taille du tableau
my_struct *ptr = malloc(nb * sizeof(*pt));
if (ptr != NULL) // toujours tester l retour de malloc
{
// on suppose qu'on lit des enregistrements dans le fichier de descripteur myfile
int i = 0;
my_struct *tmp;
my_struct buf; // buffer de lecture
while (fread(&buf, sizef(buf), 1, myfile) > 0)
{
// on mémorise l'enregistrement, on regarde la taille du tableau
if (i == nb)
// la taille du tableau est atteinte
{
// on double la taille du tableau
n *= 2;
tmp = realloc(ptr, nb * sizeof(*ptr));
if (tmp != NULL)
ptr = tmp;
else
{
fprintf(stderr, "Pb realloc\n");
// a toi de voir ce que tu veux faire
}
memcpy(&ptr[i], &buf, sizeof(buf));
i++:
}
}
} |