Bonjour,
Tout dabord bonne année.
Ensuite :
Alors, jai un problème avec un realloc dans une procédure.
J'explique le début dans un 1er temps.
Je dois faire une saisie dans un tableau dynamique, cette saisie ce fait dans une procédure.
Ce que je ne comprend pas, c'est que la première saisie marche bien, ensuite dès je relance une saisie, ja saisie précédent est affacée, la saisie courante est bien enregistré dans le bon indexe ( i+1).
En début de procédure, j'incrémente un compteur et fait un realloc.
> Je vous met le code :
Appels dans la procédure dans le main
procédure
Code : Sélectionner tout - Visualiser dans une fenêtre à part saisie_auteur(tab_auteur, &nbEleA);
voilà, merci d'avance pour votre aide, parce que là je séche completement, je pense que j'ai un pb de realloc, car si je met mon realloc dans le main, ca marche bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 void saisie_auteur(st_aut *tab_auteur, int *nbElA) { char saisie[150]=""; int tmp=0; int i=0; *nbElA=*nbElA+1; //tmp=*nbElA; tab_auteur = (st_aut*)realloc(tab_auteur, (*nbElA)*sizeof(st_aut)); if(tab_auteur==NULL) { puts("Memoire insuffisante !"); exit(-1); } printf("Saisissez le nom de l'auteur %d : ",*nbElA); fflush(stdin); gets(tab_auteur[*nbElA].nom); printf("Saisissez le prenom de l auteur %d : ",*nbElA); fflush(stdin); gets(tab_auteur[*nbElA].prenom); printf("Saisissez la nationnalite de l auteur %d : ",*nbElA); fflush(stdin); gets(tab_auteur[*nbElA].nationalite); fflush(stdin); tab_auteur[*nbElA].auteurID=*nbElA; for (i=0;i<=*nbElA;i++){ printf("[%d].id = %d\t[%d].nom = %s\t[%d].prenom = %s\t[%d].natio = %s\t\n" ,i,tab_auteur[i].auteurID,i,tab_auteur[i].nom,i,tab_auteur[i].prenom,i,tab_auteur[i].nationalite); } }
Partager