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

  FORUM HardWare.fr
  Programmation
  C

  pb de parametres en C...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb de parametres en C...

n°1458417
ezeta
Posté le 16-10-2006 à 23:27:26  profilanswer
 

Salut, je programme en C, et j'ai un probleme lors d'appel d'une fonction:
 

Code :
  1. ...
  2. char *t;
  3. if (obtenirTxt(t) == 1)
  4. {
  5. printf("\nErreur lecture texte !\n" );
  6. }
  7. else
  8. {
  9. printf("\nLecture texte:\n%s\n",t);
  10. }
  11. ...


 
qui fait appel à :
 

Code :
  1. int obtenirTxt (char *txt)
  2. {
  3. txt = obtenirTexte();
  4. printf("\nnb:%d\n",strlen(txt));
  5. if (txt == NULL) return 1;
  6. return 0;
  7. }


 
 
à l'execution j'ai ceci:
 

Citation :

nb:251
 
Lecture texte:
 


 
le probleme est donc que les caractères lu existent bien dans le sous programme, mais une fois à l'exterieur le parametre ne retourne rien.

mood
Publicité
Posté le 16-10-2006 à 23:27:26  profilanswer
 

n°1458442
Emmanuel D​elahaye
C is a sharp tool
Posté le 17-10-2006 à 00:10:02  profilanswer
 

ezeta a écrit :


Code :
  1. ...
  2. char *t;
  3. if (obtenirTxt(t) == 1)
  4. ...


Code :
  1. int obtenirTxt (char *txt)
  2. {
  3. txt = obtenirTexte();


le probleme est donc que les caractères lu existent bien dans le sous programme, mais une fois à l'exterieur le parametre ne retourne rien.


Problème récurrent. Modifier un paramètre ne sert à rien (en tout cas, ça ne change pas la valeur initiale de la variable, puisque le paramètre est une copie de la valeur initiale (variable locale).
 
Il faut  
- soit passer l'adresse de la variable à modifier,  

Code :
  1. f(&x);


- soit retourner une valeur et la stocker dans la variable.

Code :
  1. x = f();



---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1458445
ezeta
Posté le 17-10-2006 à 00:13:28  profilanswer
 

justement, le parametre en question ici est un char* c'est donc un pointeur sur une chaine de charactere...

n°1458448
Emmanuel D​elahaye
C is a sharp tool
Posté le 17-10-2006 à 00:17:24  profilanswer
 

ezeta a écrit :

justement, le parametre en question ici est un char* c'est donc un pointeur sur une chaine de charactere...


Et ? Quelle est la valeur que tu as passée ? Celle d'un pointeur non intialisé ? Comportement indéfini.
 
Je t'ai montré les 2 solutions. Laquelle se rapproche de la tienne ? Je dirais aucune. Donc ton code est buggé.
 
Fait ce que je te dis et ça fonctionnera.


Message édité par Emmanuel Delahaye le 17-10-2006 à 00:28:41

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1458451
ezeta
Posté le 17-10-2006 à 00:26:08  profilanswer
 

Tu avais raison... mais c'est un peu tordu: en effet, lorsque l'on utilise des chaine de charactere on utilise des pointeurs sur des chaines de caractere.
Donc pour passer une chaine de charactere en parametre en mise a jour, il faut passer un pointeur de pointeur: char**
... et ça marche !
 
merci ;)

n°1458452
Emmanuel D​elahaye
C is a sharp tool
Posté le 17-10-2006 à 00:29:24  profilanswer
 

ezeta a écrit :

char**
... et ça marche !


Je suis content d'avoir réussi à te décoincer le neurone...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

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

  pb de parametres en C...

 

Sujets relatifs
fonctions a nombres de parametres variablesEcrire Paramètres Application à l'éxécution en fichier conf XML
Recharger les paramètres IEImpossibilité récente de passage de paramètres à un script PHP via URL
[Access] Requete stockée : Nb de paramètres variables[php/mysql] Conserver les parametres de tri sur plusieurs pages
Passer des parametres dans une fonction JSProblème Passage de Paramètres à une fonction Javascript
lancer une application et remplir ses paramètresOracle : valeur par defaut aux parametres proc stock
Plus de sujets relatifs à : pb de parametres en C...


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