Extraire les données d'un fichier en C
Résolu/Fermé
A voir également:
- Extraire les données d'un fichier en C
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Extraire une video youtube - Guide
- Ouvrir un fichier .bin - Guide
3 réponses
scribedico
Messages postés
47
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
6 mai 2013
2
Modifié par scribedico le 22/04/2012 à 16:22
Modifié par scribedico le 22/04/2012 à 16:22
Salut,
chaine_temp ne prend pas la valeur NULL à la fin du fichier, c'est fgets qui renvoie une valeur NULL , chaine_temp conservant la derniere valeur lue dans le fichier
tu peux modifier ton code comme ça par ex :
int FF=0;
while (i<10 && !FF)
{
while (!FF && strcmp(chaine_temp , "Prenom\n") )
{
if (!fgets(chaine_temp, TAILLE_MAX_CHAINE, fichier_score) )
FF=1;
}
.................................................. (même chose pour la 2eme boucle)
2eme petit chose, si tu atteint la fin de ton fichier tu incrémentes quand même i
donc ton nombre de joueurs doit être i-1
probleme sur ta boucle for : for(i2=0; i2<i; i++)
tu incrementes i et non i2, le test doit être i2< i-1
for(i2=0; i2<i-1; i2++)
chaine_temp ne prend pas la valeur NULL à la fin du fichier, c'est fgets qui renvoie une valeur NULL , chaine_temp conservant la derniere valeur lue dans le fichier
tu peux modifier ton code comme ça par ex :
int FF=0;
while (i<10 && !FF)
{
while (!FF && strcmp(chaine_temp , "Prenom\n") )
{
if (!fgets(chaine_temp, TAILLE_MAX_CHAINE, fichier_score) )
FF=1;
}
.................................................. (même chose pour la 2eme boucle)
2eme petit chose, si tu atteint la fin de ton fichier tu incrémentes quand même i
donc ton nombre de joueurs doit être i-1
probleme sur ta boucle for : for(i2=0; i2<i; i++)
tu incrementes i et non i2, le test doit être i2< i-1
for(i2=0; i2<i-1; i2++)
scribedico
Messages postés
47
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
6 mai 2013
2
22 avril 2012 à 18:53
22 avril 2012 à 18:53
FF est initialisé à 0 donc !FF=1 et on passe dans la boucle while.
lorsque la fin de fichier sera rencontré FF passera à 1 et !FF à 0, donc la condition de la boucle sera fausse et on sort de la boucle, si tu ne le mets pas tu incrementes i jusqu'à 10 et ton nombre de joueurs sera faux
lorsque la fin de fichier sera rencontré FF passera à 1 et !FF à 0, donc la condition de la boucle sera fausse et on sort de la boucle, si tu ne le mets pas tu incrementes i jusqu'à 10 et ton nombre de joueurs sera faux
22 avril 2012 à 16:50
int FF=0;
while (i<10 && !FF)
{
while (fgets(chaine_temp, TAILLE_MAX_CHAINE, fichier_score) && strcmp(chaine_temp , "Prenom\n") ) ;
if ( !fgets(j_temp[i].prenom, TAILLE_MAX_CHAINE, fichier_score) )
FF=1;
while ( fgets(chaine_temp, TAILLE_MAX_CHAINE, fichier_score) && strcmp(chaine_temp , "Nom\n") ) ;
if (!fgets(j_temp[i].nom, TAILLE_MAX_CHAINE, fichier_score))
FF=1;
i++;
}
22 avril 2012 à 18:33
il y a un truc que je ne comprend pas: que fait le "!FF"de la première boucle?
22 avril 2012 à 18:54
Modifié par scribedico le 22/04/2012 à 19:00
for(i2=0; i2<i-1; i2++)
et ton nombre de joueurs i-1
printf("\n=>%d joueur(s)\n", i-1);