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
| #include<stdio.h>
#include<stdlib.h>
#include<string.h>
/* Attention: Ceci ne marche que sur les tableaux.
Ne pas l'employer sur un pointeur. */
#ifndef ARRAYSIZE
#define ARRAYSIZE(x) ( sizeof(x)/sizeof(x[0]) )
#endif
typedef struct pere
{
char pere[6];
char datepere[8];
struct enfant_t *enfant;
struct pere_t *suiv;
}pere_t;
pere_t* creation_pere (char const *pere, char const *datepere)
{
/* On ne caste pas le retour de malloc() en C. */
pere_t * nouv = malloc(sizeof *nouv);
if(nouv != NULL)
{
/* Note: Touche chaîne de caractères doit être terminée par un carac. nul,
et strncpy() ne le fait pas systématiquement. */
strncpy(nouv->pere, pere, ARRAYSIZE(nouv->pere));
nouv->pere[ARRAYSIZE(nouv->pere)-1] = '\0';
strncpy(nouv->datepere, datepere, ARRAYSIZE(nouv->datepere));
nouv->datepere[ARRAYSIZE(nouv->datepere)-1] = '\0';
nouv->enfant=NULL;
nouv->suiv=NULL;
}
return nouv;
}
pere_t ** insertion_pere (pere_t ** prec, pere_t * nouv)
{
nouv->suiv = *prec ;
*prec = nouv;
prec = &(nouv->suiv);
return prec;
} |
Partager