-
Plusieurs remarques en vrac sur ton code :
* void main(void) n'est pas une forme correcte du main c'est int main(void) avec le retour qui va bien.
* Le retour du malloc dans le main n'est pas tester. De plus le cast de la valeur de retour du malloc n'est pas utile. Je te conseille de mettre sizeof(*tab_auteur) plutot que sizeof(st_aut) ce qui permet de faciliter la maintenance si tu dois un jour changer le type de tab_auteur.
* Tu as bien pense a utiliser deux pointeurs pour le realloc afin de gerer le cas ou celui-ci echoue. Toutefois malgre l'echec du reaaloc, tu vas ecrire un nouvel element pour lequel tu n'as pas la place.
* Tes allocations ne sont jamais libere.
* fflush() n'est defini que sur les flux sortant, le comportement de fflush(stdin) n'est donc pas defini et peut tres bien n'avoir aucun effet sur certains systemes.
* Pourquoi limites-tu la taille de tes saisie via fgets a sizeof(strlen(saisie)) (qui correspond a la taille d'un size_t) et non a sizeof saisie (qui correspond a la taille de la chaine) ?
* Attention : le buffer de saisie 'saisie' a une taille de 150 byte alors que l'element nom dans la structure n'a qu'une taille de 50 byte.
* Dans le main, tu fais un scanf("%d",&choix); pour recuperer l'entree du menu. Le probleme c'est que tu ne consomme pas le \n de la validation et si tu rentres une lettre par exemple tu pars en boucle inifinie (a moins que sur ton systeme fflush(stdin) vide bien le buffer d'entree standard mais ce n'est pas portable et ne fonctionnera probablement le jour ou tu changeras de systeme).
* windows.h n'est pas un header standard et est inutile dans ton exemple.
* l'header necesssaire au fonction d'allocation memoire est stdlib.h, il est donc inutile d'inclure malloc.h (Je me demande meme si il est standard).
* le case 2: dans ton main est inutile.
* la variable i du main n'est pas utilise.
-
Merci pour tes conseils.
A priori mon problème est résolu, il s'agissait d'un problème de poiteur, erreur de syntaxe ( enfin plutot méconnaissance ) et peut etre quelques chose avec la liberation de la mémoire, les free non mit.
J'ai demandé à mon prof, et il m'a résolut cà, en m'expliquant bien sur.
En tout cas mer ci pour votre aide, et désolé d'avoir été un peu boulet avec mes post et surtout le post de code mal mit.