Variable qui change de valeur seule
Résolu
marie12_2000
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
Dalfab Messages postés 706 Date d'inscription Statut Membre Dernière intervention -
Dalfab Messages postés 706 Date d'inscription Statut Membre Dernière intervention -
Bonjour a tous ma variable nombre change de valeur seule elle prend des valeur bizarres comme 23 alors qu'elle doit être décrémentée et ne doit pas dépasser le 10 ce problème est au niveau de la procédure chargementInit de plus le fichier est vide quand je veux l'afficher
le fichier a été ouvert dans le programme principal et pour faire gros j'essaye de générer des informations et les écrire dans un fichier (méthode L7OVC)
je vous en supplie aidez moi
le fichier a été ouvert dans le programme principal et pour faire gros j'essaye de générer des informations et les écrire dans un fichier (méthode L7OVC)
je vous en supplie aidez moi
void chargementInit(L7OVC * fichier,int n) { int i,taille; char taillech[1000]; char mat[1000]; int matricule; char nom[1000],wilaya[1000],sexe[1000],gp[1000],grade[1000],dp[1000],prenom[1000]; date DN,DR; char specialite[1000]; char DNj[1000],DNm[1000],DNa[1000]; char DRj[1000],DRm[1000],DRa[1000]; int n1; Tbloc buf; char universites[108][500]; char ligne[500]; i=0; FILE *f=NULL; f=fopen("universites.txt","r"); // on ouvre le fichier des universites while ( !feof(f)) { fgets(&ligne,255,f); strcpy(universites[i],ligne); i++; } fclose(f); int nombre=n; int j; int cpt; i=1; j=0; // while(nombre>0) // { cpt=0; // on genere toutes les informations // wilaya naissance aleaWilaya(wilaya); cpt=cpt+strlen(wilaya); // matricule matricule=aleaMatricule(); cpt=cpt+6; // Nom taille=aleaTailleNP(); aleaNP(taille,nom); cpt=cpt+strlen(nom); // preNom taille=aleaTailleNP(); aleaNP(taille,prenom); cpt=cpt+strlen(prenom); // Sexe aleaSexe(sexe); cpt=cpt+strlen(sexe); // grade aleaGrade(grade); cpt=cpt+strlen(grade); // specialite aleaSpec(specialite); cpt=cpt+strlen(specialite); // dernier diplome aleeaDp(dp); cpt=cpt+strlen(dp); // groupe sanguin aleaGrp(gp); cpt=cpt+strlen(gp); // etablissmeent / univ int random= rand()%108; cpt=cpt+strlen(universites[random-1]); // date de naissance aleaDateN(&DN); cpt=cpt+nbpos(DN.jour); cpt=cpt+nbpos(DN.mois); cpt=cpt+nbpos(DN.annee); // date recrutement aleaDateR(&DR); cpt=cpt+nbpos(DR.jour); cpt=cpt+nbpos(DR.mois); cpt=cpt+nbpos(DR.annee); turn_to_string(taillech,cpt,3); // printf("%d nombre1 \n",nombre); ecrire_chaine(fichier,3,&i,&j,taillech,&buf); buf.chaine[j]='0'; j++; turn_to_string(mat,matricule,6); // printf("%d nombre2 \n",nombre); ecrire_chaine(fichier,6,&i,&j,mat,&buf); aff_entete(fichier,5,entete(fichier,5)+1); ecrire_chaine(fichier,strlen(universites[random-1]),&i,&j,universites[random-1],&buf); ecrire_chaine(fichier,strlen(nom),&i,&j,nom,&buf); ecrire_chaine(fichier,strlen(prenom),&i,&j,prenom,&buf); ecrire_chaine(fichier,strlen(sexe),&i,&j,sexe,&buf); turn_to_string(DNj,DN.jour,nbpos(DN.jour)); //printf("%d nombre3 \n",nombre); turn_to_string(DNm,DN.mois,nbpos(DN.mois)); turn_to_string(DNa,DN.annee,nbpos(DN.annee)); ecrire_chaine(fichier,2,&i,&j,DNj,&buf); ecrire_chaine(fichier,2,&i,&j,DNm,&buf); ecrire_chaine(fichier,4,&i,&j,DNa,&buf); //printf("%d nombre4 \n",nombre); ecrire_chaine(fichier,strlen(wilaya),&i,&j,wilaya,&buf); ecrire_chaine(fichier,strlen(gp),&i,&j,gp,&buf); turn_to_string(DRm,DR.mois,nbpos(DR.mois)); turn_to_string(DRa,DR.annee,nbpos(DR.annee)); turn_to_string(DRj,DR.jour,nbpos(DR.jour)); //printf("%d nombre5 \n",nombre); ecrire_chaine(fichier,strlen(DRj),&i,&j,DRj,&buf); ecrire_chaine(fichier,strlen(DRm),&i,&j,DRm,&buf); ecrire_chaine(fichier,strlen(DRa),&i,&j,DRa,&buf); ecrire_chaine(fichier,strlen(specialite),&i,&j,specialite,&buf); ecrire_chaine(fichier,strlen(grade),&i,&j,grade,&buf); //printf("%d nombre6 \n",nombre); n1=nombre; ecrire_chaine(fichier,strlen(dp),&i,&j,dp,&buf); //printf("%d nombre7 \n",nombre); nombre=n1; nombre=nombre-1; printf("%d le nombre\n"); // } ecriredir(fichier,i,&buf); rewind(fichier->fich); fwrite(&(fichier->entete),sizeof(Entete),1,fichier->fich);/// on ecrit l'entete }
Configuration: Windows / Chrome 75.0.3770.142
A voir également:
- Variable qui change de valeur seule
- Changer de dns - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Changer l'orientation d'une seule page word - Guide
- Application se ferme toute seule android - Guide
- Tv samsung change de chaine toute seule - Forum Box et Streaming vidéo
1 réponse
Bonjour,
Etant donné qu'une variable ne change pas toute seule de valeur. Ta variable est modifiée soit directement (lignes 133 et 134), soit indirectement par l'utilisation d'un pointeur qui pointerait n'importe où ('heureusement' sur ta variable) ou bien par débordement d'un tableau qui atteindrait ta variable.
L'erreur serait donc dans une de tes fonctions appelée ou dans la fonction elle-même.
Pour trouver le 'coupable' tu peux utiliser des printfs judicieux pour y arriver en quelques mois. Tu devrais plutôt utiliser ton débogueur en mode pas à pas, et trouver à quel moment exact elle change de valeur.
Etant donné qu'une variable ne change pas toute seule de valeur. Ta variable est modifiée soit directement (lignes 133 et 134), soit indirectement par l'utilisation d'un pointeur qui pointerait n'importe où ('heureusement' sur ta variable) ou bien par débordement d'un tableau qui atteindrait ta variable.
L'erreur serait donc dans une de tes fonctions appelée ou dans la fonction elle-même.
Pour trouver le 'coupable' tu peux utiliser des printfs judicieux pour y arriver en quelques mois. Tu devrais plutôt utiliser ton débogueur en mode pas à pas, et trouver à quel moment exact elle change de valeur.