Variable qui change de valeur seule
Résolu
marie12_2000
Messages postés
29
Statut
Membre
-
Dalfab Messages postés 720 Statut Membre -
Dalfab Messages postés 720 Statut Membre -
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
- Application se ferme toute seule android - Guide
- Changer l'orientation d'une seule page word - Guide
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
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.