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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
unsigned short jour;
char mois[9 + 1];
unsigned short anne;
} t_date;
int test()
{
int v;
char c;
c=getchar();
printf("voulez vous continuez?(o/n)\t");
scanf("%c",&c);
if(c=='o' || c=='O')
v=1;
else
v=0;
return v;
}
int main()
{
t_date *toto; // Voilà un nom très significatif !!!
t_date *pt;
size_t nb_date; // Nb de date entrées
size_t max_date; // Max dates possibles en mémoire
int i;
nb_date=0;
max_date=0;
toto=NULL; // Impératif => permet au realloc de faire un choix entre allocation et réallocation
// Boucle de saisie
do
{
// Vérification si besoin allocation supplémentaire
if (nb_date == max_date)
{
// Agrandissement du nb max de dates possibles
max_date+=10;
// Réallocation
toto=realloc(toto, max_date * sizeof(t_date));
}
// Saisie
printf("la date %d:\t", nb_date + 1);
pt=toto + nb;
scanf("%hu %s %hu", &pt->jour, pt->mois, &pt->anne);
nb_date++;
}while(test());
for(i=0, pt=toto; i < nb_date; i++, pt++)
printf("%hu %s %hu\n", pt->jour, pt->mois, pt->anne);
free(toto);
} |
Partager