/* Bonjour, le programme compile et s'execute partiellement lorsque allocation de memoire et initialisation des champs sont realisees directement dans le main, ce programme fonctionne bien lorsque allocation de memoire et initialisation des champs sont realisees a l'aide d'une fonctions, tout semble bien se passer dans la fonction mais apres cela, le tableau de structures n'est pas accessible dans le main merci de m'aider a trouver l'erreur */ #include #include typedef struct personne { char nom[15]; int age; float poids; } mapersonne; void creer_tab (int dim, mapersonne *tab) { /*mmm initialise le tableau de structures */ int i; printf("char = %d\n",sizeof(char)); printf("int = %d\n",sizeof(int)); printf("dim = %d\n",sizeof(float)); printf("mapersonne sizeof = %d\n", sizeof(mapersonne)); // tab = malloc(dim*sizeof(mapersonne)); i = 0; while ( i < dim) { printf("donnez un nom - un age - un poids\n"); scanf("%s", tab[i].nom); scanf("%d", &(tab[i].age)); scanf("%f", &(tab[i].poids)); printf("dans fonction creer_tab : nom = %s age = %d poids = %f\n",tab[i].nom, tab[i].age, tab[i].poids); i++; } return ; } int main() { int nb_pers, i; // pointeur defini pour l'allocation dynamique de memoire mapersonne *tab_pers_1 = NULL; mapersonne *tab_pers_2 = NULL; // printf ("nombre de personnes a definir ?\n"); scanf("%d", &nb_pers); // // debut creation tab_pers_1 directement dans main() - tout fonctionne parfaitement printf("debut de l'initialisatio du tableau de structures directement dans main()\n"); tab_pers_1 = malloc(nb_pers*sizeof(mapersonne)); // i = 0; while ( i < nb_pers) { printf("donnez un nom - un age - un poids\n"); scanf("%s", tab_pers_1[i].nom); scanf("%d", &(tab_pers_1[i].age)); scanf("%f", &(tab_pers_1[i].poids)); i++; } // impression de valeurs definies ci-dessus for (int i = 0;i