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

  FORUM HardWare.fr
  Programmation
  C++

  Variables globales qui changent pas de valeur.... :|

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variables globales qui changent pas de valeur.... :|

n°248170
albino13
Against TCPA // Palladium
Posté le 19-11-2002 à 06:02:28  profilanswer
 

Bonjour,
voila avant mon main je mais ca:
int retourSupp;
 
dans une fonction je fais
if(supp<0)
{
  retourSupp++;
}
 
et dans une autre fonction (declaré avant) je fais:
 
if(retourSupp<=0)
{
  menuClient();
}
else
{
  menuSupp();
}
 
mon probleme c'est que dans ma fonction (la premiere) retourSupp est bien a 1 mais des que ca passe a l'autre fonction ca revien a 0... pourquoi? une variable globale reste pas a la derniere valeur qu'on lui donne??? comprend pas la...


---------------
[:zeitoon] HxC rulezzzzzzzzz
mood
Publicité
Posté le 19-11-2002 à 06:02:28  profilanswer
 

n°248172
Musaran
Cerveaulté
Posté le 19-11-2002 à 06:15:55  profilanswer
 

Donne ton code réel, par copier-coller.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°248174
albino13
Against TCPA // Palladium
Posté le 19-11-2002 à 06:21:20  profilanswer
 

Code :
  1. ///// Variables globales//////////////////////////////
  2. FILE *newClient;
  3. int retourSupp;
  4. /////////////// MAIN //////////////////
  5. void main(void)
  6. {
  7.   fmenuPrincipal();
  8. }
  9. void fconsultationClient(void)
  10. {
  11.   printf("retourSupp: %d",retourSupp);
  12.   getch();
  13.   FILE *newClient;
  14.   int y=6,nombreClient=0;
  15.   flushall();
  16.   clrscr();
  17.   if((newClient=fopen("clients.txt","r" ))==NULL)
  18.   {
  19.     printf("Erreur le fichier 'clients.txt' n'existe pas encore\n" );
  20.     getch();
  21.   }
  22.   else
  23.   {
  24. /* je vous passe l'affichage.... */
  25.   }
  26.   printf("retourSupp: %d",retourSupp);
  27.   getch();
  28.   if (retourSupp==0)
  29.   {
  30.     fmenuClient();
  31.   }
  32.   else
  33.   {
  34.     fsupressionClient();
  35.   }
  36. }
  37. void fsupressionClient(void)
  38. {
  39.   FILE *temporaire;
  40.   int compteur=0,num,trouve=0,numSuppCli,retourSupp=0;
  41.   char reponse,raisonSocial[25+1];
  42.   if((newClient=fopen("clients.txt","r" ))==NULL)
  43.   {
  44.     printf("Erreur, il n'existe pas de fichier 'clients.txt'\n" );
  45.     getch();
  46.     fmenuClient();
  47.   }
  48.   else
  49.   {
  50.     while(fread(&enreg,sizeof(Sclient),1,newClient),!feof(newClient))
  51.     {
  52.       if(enreg.num!=0)
  53.       {
  54.         compteur++;
  55.       }
  56.       /*le if(enreg.num!=0) est la pour une deuxieme utilisation
  57.       lorsqu'il existe deja un enreg.num=0 mais cela veut dire
  58.       qu'il n'y a pas de client a cette emplacement*/
  59.     }
  60.     fclose(newClient);
  61.     if(compteur==0)
  62.     {
  63.       printf("Il n'y à aucun client dans le fichier\n" );
  64.       getch();
  65.       fmenuClient();
  66.     }
  67.     else if(compteur==1)
  68.     {
  69.       /*blablablabla...*/
  70.     {
  71.       flushall();
  72.       if((temporaire=fopen("clientsTemporaire.txt","w" ))==NULL)
  73.       {
  74.         printf("Erreur\n" );
  75.         getch();
  76.         fmenuMAJClient();
  77.       }
  78.       else
  79.       {
  80.         fclose(temporaire);
  81.         clrscr();
  82.         printf("Suppression d'un client\n" );
  83.         printf("Desirez-vous consulter la liste des clients? (o/n)\n" );
  84.         scanf("%c",&reponse);
  85.         printf("toto" );
  86.         if(reponse=='o'||reponse=='O')
  87.         {
  88.           clrscr();
  89.         printf("toto" );
  90.           retourSupp++; //servira a revenir dans le menu de la suppression
  91.           printf("retourSupp: %d",retourSupp);
  92.           getch();
  93.           fconsultationClient();
  94.         }

bon je savais pas si je devais tt mettre ou pas... alors j'en ai mis qu'une partie :) mais si y'en a encore trop...


---------------
[:zeitoon] HxC rulezzzzzzzzz
n°248175
Musaran
Cerveaulté
Posté le 19-11-2002 à 06:29:48  profilanswer
 

Code :
  1. void fsupressionClient(void)
  2. {
  3. FILE *temporaire;
  4. int compteur=0,num,trouve=0,numSuppCli,retourSupp=0;

Oh la belle variable locale initialisée !


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°248176
albino13
Against TCPA // Palladium
Posté le 19-11-2002 à 06:33:12  profilanswer
 

Musaran a écrit a écrit :

Code :
  1. void fsupressionClient(void)
  2. {
  3. FILE *temporaire;
  4. int compteur=0,num,trouve=0,numSuppCli,retourSupp=0;

Oh la belle variable locale initialisée !
 



:lol:  :pt1cable:  :sweat: merci je l'avais oubliée celle la ... et je la voyais même plus  :sarcastic:


---------------
[:zeitoon] HxC rulezzzzzzzzz
n°249054
Musaran
Cerveaulté
Posté le 19-11-2002 à 21:42:25  profilanswer
 

Je connais ça...
Des fois on sature, on bloque, et on laisse passer les pires bourdes.
 
Dans ces situations, aller faire un tour, se consacrer à autre chose, puis y revenir plus tard.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°249057
verdoux
And I'm still waiting
Posté le 19-11-2002 à 21:45:38  profilanswer
 

Musaran a écrit a écrit :

Je connais ça...
Des fois on sature, on bloque, et on laisse passer les pires bourdes.
 
Dans ces situations, aller faire un tour, se consacrer à autre chose, puis y revenir plus tard.




Dans le cas présent je crois que le mieux aurait été d'effacer le fichier source par erreur et d'avoir à tout recoder :D

n°249260
BifaceMcLe​OD
The HighGlandeur
Posté le 20-11-2002 à 09:47:42  profilanswer
 

La meilleure façon d'éviter ce genre de bourde de manière sure reste de l'encapsuler complètement avec des accesseurs : tu la mets dans un fichier .c à part, déclarée en static pour que le reste de l'appli n'y ait pas accès, et tu définis un get() et un set() publics sur cette variable.
 
Le reste du code ne pourra alors modifier la variable globale qu'au travers du set(), et la lire qu'avec le get(). Tu pourras ainsi aisément contrôler qui modifie quoi.

n°250374
Musaran
Cerveaulté
Posté le 21-11-2002 à 04:02:01  profilanswer
 

Ben oui, mais si tu viens mettre de la rigueur et de la structure là-dedans, où est fun ?


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°250441
BifaceMcLe​OD
The HighGlandeur
Posté le 21-11-2002 à 10:13:11  profilanswer
 

:sarcastic:  :non:  :D


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

  Variables globales qui changent pas de valeur.... :|

 

Sujets relatifs
variables d'environnement ac jdk1.4.1Liste de variables qui s'incrémente
[XHTML] Faire passer 2 variables ?[JAVA] erreur d'exécution: variables d'environnement?[résolu]
Équivalent à « parent:: » fonctionnant avec les variablesAfficher quelque chose en "echo" en fonction d'une valeur.
[PHP/MySQL]Comment je fais pour récupérer la valeur que sum() créé ?[JS] recevoir des variables en paramètre, svp c tout court à répondre
[TP] comment arrondir une val déc. à la valeur entière sup?Variables dans URL qui passent pas sous IE !!
Plus de sujets relatifs à : Variables globales qui changent pas de valeur.... :|


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