salut
flush n est defini que pour des flux sortant, c est a dire que, par exemple:
fflush(stdout);
fflush(stderr);
sont correct, par contre
fflush(stdin);
n est pas defini et depent des implantations, donc n est pas portable!!
d apres la specification de ta fonction main, ton programme renvoie un entier ( int main(...) ), il faut donc en renvoyer un, a la fin de ton programme met:
return 0;
OU
exit(EXIT_SUCCESS);
j ai pas bien compris a quoi sert TRAV, tu peux utiliser le meme prinipe que ton premier programme, c et dire que tu realloue A puis que tu copie B dans A... De plus la zone memoire allouee a TRAV n est pas liberee a la fin de ton programme!!
dans la boucle for ou tu sauvegarde le contenue de a dans trav, tu quitte la boucle si i<=N, c est pas bon, il faut quitter si i<N:
for(i=0,i<N,i++){...}
Il y a une erreur de meme genre dans la boucle d affichage: tu initialise i a 1 et pas a 0...
comme tu doit le savoir, l operateur '*' est prioritaire sur l operateur '+', quand tu alloue la deuxieme fois de la memoire a A, il faut mettre
A=malloc((N+M)*sizeof(int))
il vaut mieux utiliser strtoul et sa famille plutot que atoi, la gestion des erreur est plus simple! atoi renvoie 0 si il y a une erreur, il est donc dificile de savoir si il a eu une erreur ou si l utilisateur a rentre la valeur 0, tandis que strtoul utilise un pointeur qui vaut NULL si il n y a pas eu d erreur ou qui pointe sur le caractere qui n est pas correct, si il y en a un.