Erreur sur pointeur sur int - C - Programmation
Marsh Posté le 22-08-2011 à 13:54:45
Je ne trouve pas de raison valable au non-fonctionnement de ton code. L'erreur doit se trouver dans la partie non recopiée ici.
Voici un code minimaliste qui reprend ton post :
Code :
|
Résultat :
farfarawayinadistantgalaxy = 123 |
edit : par contre, tu passes &my_char, qui est de type char**, à ta fonction B qui n'accepte qu'un char* en argument
Marsh Posté le 22-08-2011 à 14:10:05
Effectivement il s'agit bien d'un char ** b.
J'ai trouvé l'erreur, on faisait un malloc *a dans la fonction B.
Je l'ai supprimé et tout marche nickel.
Merci quand même
Elmoricq a écrit : Je ne trouve pas de raison valable au non-fonctionnement de ton code. L'erreur doit se trouver dans la partie non recopiée ici.
|
Marsh Posté le 22-08-2011 à 13:11:53
Bonjour à tous
Alors voilà mon problème : j'ai un programme qui fait appel à une fonction A qui elle même fait appel à une fonction B.
La fonction B prend en paramètre un pointeur de int (int *a) et un pointeur sur char (char *c).
Dans ma fonction B je déclare un int en local (int a_loc) (qui fait sa vie dans la fonction) et à la fin de la fonction B je fais donc :
*a=a_loc afin de récupérer la valeur de a_loc dans ma fonction appelante (A)
Le problème est que je n'arrive pas à récupérer la valeur justement, ci-dessous le code avec qui je pense mon problème sera plus clair
Code :
Dans la fonction A :
int my_int = 0;
char *my_char;
int retour = 0;
..........
..........
.........
retour = fonctionB(&my_int, &my_char);
printf ("Affichage 1 : <%d>", my_int);
Dans la fonction B :
int fonction (int *a, char *b) {
int a_loc = 0;
.........
..........
.........
*a=a_loc;
printf ("Affichage 2 : <%d>", *a);
return 0;
}
Au final mes 2 affichages sont différents (le deuxième est bon mais le premier est toujours à 0)
PS : je suis sous Linux Red Hat5
Merci d'avance pour votre aide