Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2315 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Erreur sur pointeur sur int

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur sur pointeur sur int

n°2096695
sal1
Posté le 22-08-2011 à 13:11:53  profilanswer
 

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
 

mood
Publicité
Posté le 22-08-2011 à 13:11:53  profilanswer
 

n°2096699
Elmoricq
Modérateur
Posté le 22-08-2011 à 13:54:45  profilanswer
 

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 :
  1. #include <stdio.h>
  2.  
  3. void bar(int *farfarawayinadistantgalaxy) {
  4.   int foobar = 123;
  5.   *farfarawayinadistantgalaxy = foobar;
  6.   printf("farfarawayinadistantgalaxy = %d\n", *farfarawayinadistantgalaxy);
  7. }
  8.  
  9. void foo() {
  10.   int i = 0;
  11.   bar(&i);
  12.   printf("i = %d\n", i);
  13. }
  14.  
  15. int main(void) {
  16.   foo();
  17.   return 0;
  18. }
 

Résultat :

farfarawayinadistantgalaxy = 123
i = 123

 

edit : par contre, tu passes &my_char, qui est de type char**, à ta fonction B qui n'accepte qu'un char* en argument

Message cité 1 fois
Message édité par Elmoricq le 22-08-2011 à 13:58:45
n°2096704
sal1
Posté le 22-08-2011 à 14:10:05  profilanswer
 

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.
 
Voici un code minimaliste qui reprend ton post :

Code :
  1. #include <stdio.h>
  2.  
  3. void bar(int *farfarawayinadistantgalaxy) {
  4.   int foobar = 123;
  5.   *farfarawayinadistantgalaxy = foobar;
  6.   printf("farfarawayinadistantgalaxy = %d\n", *farfarawayinadistantgalaxy);
  7. }
  8.  
  9. void foo() {
  10.   int i = 0;
  11.   bar(&i);
  12.   printf("i = %d\n", i);
  13. }
  14.  
  15. int main(void) {
  16.   foo();
  17.   return 0;
  18. }


 
Résultat :

farfarawayinadistantgalaxy = 123
i = 123


 
edit : par contre, tu passes &my_char, qui est de type char**, à ta fonction B qui n'accepte qu'un char* en argument



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Erreur sur pointeur sur int

 

Sujets relatifs
Erreur *** glibc detected ***free(): invalid pointeurErreur "build.xml:265 servletapi not found"
Ajax et session PHP erreur Incomplete ObjectErreur de script sur validateur html/xml
script lua erreur "unexpected symbol near "Help .htaccess, erreur 500 depuis ce matin
Problème avec l'erreur Oracle ORA-19025erreur easy php vérifier version
erreur modélisation gestion achat vente[ADA] Erreur d'execution | liste chainée => soucis de pointeur ?
Plus de sujets relatifs à : Erreur sur pointeur sur int


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR