Probleme avec un pointeur - C - Programmation
Marsh Posté le 25-04-2010 à 18:01:07
1/ Dans le code que tu donnes, ptr pointe vers le continuer de compareNbrG().
2/ Que se passe-t'il si on rentre qqch d'autre que 0 ou 1?
Marsh Posté le 25-04-2010 à 18:13:28
Citation : ça fonctionne pas |
Qu'est-ce qui ne marche pas ? Il y a un plantage ? un message d'erreur à lacompilation ? autre chose ?
if (continuer == 1) |
Que fait ce code ? Remplaçons continuer par Sarkozy et ptr par adresse de Fillon. Comme on le sait, Sarkozy habite à l'Elisée, et on va dire qu'il y a un beau vase là bas. Le programme change l'adresse de Fillon. Il n'est plus à Matignon, mais à l'Elysée. Puis à cette nouvelle adresse, on y met un beau vase. Mais il était déjà là. Alors, c'est comme si on n'avait rien fait.
N.B. Il faut choisir de meilleurs noms pour ces variables. Généralement, on combine une description du contenu avec un code pour le type de contenu. Par exemple, au lieu de continuer et ptr, on peut chosir ContinuerFlag, ContinuerPtr.
Marsh Posté le 25-04-2010 à 20:41:35
Citation : int nbrE, continuer = 0,*ptr = NULL; |
Tu déclares une variable locale (a la procédure) nommée continuer. Cette variable va donc masquer la variable continuer déclarée dans main.
Ce que tu aurais du faire:
Soit:
Déclaration
void compareNbrG(int nbrMystere, int *cont)
{
int nbrE, *ptr = NULL;
*cont = 0;
......................
Appel:
void compareNbrG(xxx, &continuer);
Ou bien (ce me semblerait bien plus logique):
Déclaration
int compareNbrG(int nbrMystere)
{
int nbrE, continuer = 0,*ptr = NULL;
.................
return continuer;
}
..........................
Appel:
continuer = compareNbrG(xxx);
A+,
Marsh Posté le 26-04-2010 à 11:03:50
Merci, mais je crois que vous avez pas compris ce que je voulais dire, car a la fin de la fonction compare je veux retourné dans le main avec la valeur de "continuer changer" pour pouvoir faire la boucle jusqu'au menu..
Voici mon main :
Code :
|
voici mes fonctions :
Code :
|
Marsh Posté le 26-04-2010 à 13:03:33
Citation : Merci, mais je crois que vous avez pas compris ce que je voulais dire, car a la fin de la fonction compare je veux retourné dans le main avec la valeur de "continuer changer" pour pouvoir faire la boucle jusqu'au menu.. |
Si, j'ai parfaitement compris ce que tu dis, la c'est toi qui n'a pas compris les explications.
La variable continuer de main ne sera pas modifiée par les appels a compareNbrG et compareNbrT parce que dans compareNbrG la variable continuer de main est masquée par la variable continuer de compareNbrG et que dans compareNbrT la variable continuer de main est masquée par la variable continuer de compareNbrT.
C'est pas comme tu as voulu faire qu'on fait (tu as essayé d'utiliser continuer comme variable globale, c'est pas une mauvaise idée [si tout était dans un seul fichier, et que tu supprimais les définitions de continuer dans compareNbrG et compareNbrT, ça pourrait marcher], sauf que ça cause beaucoup trop de problèmes a la longue, les variables globales, et c'est une habitude qu'il ne faut pas prendre). Je t'ai indiqué dans mon post précédent comment remédier a ton pb.
A+,
Marsh Posté le 26-04-2010 à 15:24:44
gilou a écrit : Je t'ai indiqué dans mon post précédent comment remédier a ton pb. |
Faudrait déjà qu'il les lise (et pas en diagonale)
Marsh Posté le 25-04-2010 à 17:55:17
Salut
Voila j'ai fais une fonction qui compare le nombre entré avec le nombre mystère en demandant a la fin si on veut continuer, alors pour ça j'ai déclaré un pointeur qui pointe sur la variable continuer qui se trouve dans le main, mais hélas ça fonctionne pas.. pourquoi?
La fonction compare :