cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 2011
-
7 sept. 2005 à 14:13
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
8 sept. 2005 à 00:42
Bonjour à tous,
J'ai retourné les pointeurs dans tous les sens mais rien n'y fait.
J'aimerais modifier la valeur d'une variable int à l'interieur d'une fonction.
Selon tout ce que j'ai lu, ça devrait être ça:
void gererOuiNon(int* val) {
if (*val==0) { // Non
*val = 1;
}
if (*val==1) { // Oui
*val = 0;
}
printf("%d",val); // Affiche un grand nombre (normal, c'est le pointeur)
printf("%d",*val); // Affiche un grand nombre à la place de 0 ou 1
}
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 8 sept. 2005 à 00:42
Pour résoudre, tu lances la phase débuggage bourrin. Tu rajoutes
printf("%d",entete); quasiment partout, et tu regardes quand la valeur
change alors qu'elle ne devrait pas :) Cad, avant l'appel a ta
fonction, des le début de ta fonction et apres c'est toi qui choisit :)
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 7 sept. 2005 à 14:34
ui, j'ai recopié le code pour ne mettre que l'essentiel,
Excuse pour le mauvais recopiage...
Voici le code corrigé:
int entete = 0; // Variable globale
void gererOuiNon(int* val) {
if (*val==0) { // Non
*val = 1;
}
if (*val==1) { // Oui
*val = 0;
}
printf("%d",val); // Affiche un grand nombre (normal, c'est le pointeur)
printf("%d",*val); // Affiche un grand nombre à la place de 0 ou 1
}
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 7 sept. 2005 à 14:46
Tu le fait exeuprès ou quoi ???
Tu mets if( *val == 0 ) donc la ca rentre dans ta condition
Après tu mets if( *val == 1 ) et la ca rentre aussi vu que précédement t'as modifier la valeur de val a 1.
Ecris donc :
if (*val==0)
{ // Non
*val = 1;
}
else if (*val==1)
{ // Oui
*val = 0;
}
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 7 sept. 2005 à 15:26
En fait je crois que le recopiage n'était pas une bonne idée.
Voici plus d'infos pour ceux que j'ai perturbé (et je m'en excuse):
C'est un logiciel pour portable lecteur de code à barres.
C'est la page de paramètres et ici, je récupère la touche saisie par l'utlisateur pour modifier les options (oui ou non).
Et comme la fonction doit me retourner 2 valeurs, je passe un paramètre par référence (Cette fonction sert aussi à d'autres options, je ne peux donc pas modifier directement la variable: entete à l'interieur).
Ouf, je croit que je suis arrivé à me faire comprendre, c'est déjà ça.