[C] Remplacer une valeur dans un fichier ...
Fermé
Vidarce
Messages postés
6
Date d'inscription
lundi 27 novembre 2000
Statut
Membre
Dernière intervention
17 août 2010
-
5 janv. 2007 à 11:20
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 9 janv. 2007 à 12:27
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 9 janv. 2007 à 12:27
A voir également:
- [C] Remplacer une valeur dans un fichier ...
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
5 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
5 janv. 2007 à 13:48
5 janv. 2007 à 13:48
Salut.
Moi dans ton cas, je me fait pas chier :
je lis tout et je met dans une variable qui va bien : genre tableau de string.
Ensuite j'effectu la bonne opération sur cette variable (placement du meilleur score, et virer le dernier).
Ensuite, j'écrase tout simplement le fichier de records.
c'est bourrin, mais tant que le fichier n'est pas trop gros.
Moi dans ton cas, je me fait pas chier :
je lis tout et je met dans une variable qui va bien : genre tableau de string.
Ensuite j'effectu la bonne opération sur cette variable (placement du meilleur score, et virer le dernier).
Ensuite, j'écrase tout simplement le fichier de records.
c'est bourrin, mais tant que le fichier n'est pas trop gros.
Vidarce
Messages postés
6
Date d'inscription
lundi 27 novembre 2000
Statut
Membre
Dernière intervention
17 août 2010
2
5 janv. 2007 à 14:52
5 janv. 2007 à 14:52
Merci pour ta réponse !
J'y avais pas pensé je dois l'avouer !! Mais par contre, tout mettre dans "genre tableau de string" je comprend pas trop pour être honnete !!
Si tu pouvait être un tout petit peu plus précis, ca me ferait plaisir.
J'y avais pas pensé je dois l'avouer !! Mais par contre, tout mettre dans "genre tableau de string" je comprend pas trop pour être honnete !!
Si tu pouvait être un tout petit peu plus précis, ca me ferait plaisir.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 janv. 2007 à 12:27
9 janv. 2007 à 12:27
un tableau de string, ou tableau de chaine de caractère:
char** ou string[5]
mettons un char** resu;
dans resu[0] tu met la premiere ligne de ton fichier (temps +nom +...)
dans resu[1] l deuxième etc.
ensuite, tu compare ton nouveau temps avec ce qu'il y a dans resu.
metons que tu le mettent en position trois, tu fai :
strcpy(resu[4],resu[3]);
strcpy(resu[3],resu[2]);
strcpy(resu[2],nouveau_record);
Ensuite tu écrit resu dans ton fichier.
char** ou string[5]
mettons un char** resu;
dans resu[0] tu met la premiere ligne de ton fichier (temps +nom +...)
dans resu[1] l deuxième etc.
ensuite, tu compare ton nouveau temps avec ce qu'il y a dans resu.
metons que tu le mettent en position trois, tu fai :
strcpy(resu[4],resu[3]);
strcpy(resu[3],resu[2]);
strcpy(resu[2],nouveau_record);
Ensuite tu écrit resu dans ton fichier.
Je pense que tu ne devrais enregistrer que les meilleurs temps (pas le classement), avec un bon séparateur (genre ';'). Pour faire propre, le classement et le "s" n'ont pas grand chose à faire dans le fichier (séparation données/affichage)
Ensuite tu crée un tableau de float, dans lequel tu mets en premier le nouveau temps à insérer, suivi des 5 temps enregistrés dans le fichier. Ensuite petit exercice de classement du tableau (tri à bulles mon amour), et tu n'as plus qu'à réécrire (écraser) le fichier de sauvegarde avec les 5 meilleurs temps...
Je sais pas si c'est clair ! ^^
Ensuite tu crée un tableau de float, dans lequel tu mets en premier le nouveau temps à insérer, suivi des 5 temps enregistrés dans le fichier. Ensuite petit exercice de classement du tableau (tri à bulles mon amour), et tu n'as plus qu'à réécrire (écraser) le fichier de sauvegarde avec les 5 meilleurs temps...
Je sais pas si c'est clair ! ^^
Vidarce
Messages postés
6
Date d'inscription
lundi 27 novembre 2000
Statut
Membre
Dernière intervention
17 août 2010
2
6 janv. 2007 à 13:32
6 janv. 2007 à 13:32
Merci pour ta réponse bumblebee !
Donc si j'ai bien compris, je met ke les temps ==> je lis mon fichier ou il y a deja des temps, je les met dans un tableau de float, je prend ke les meilleurs temps, je le classe et hop je l'écris dans mon fichier c ca ??
Merci d'avance
Donc si j'ai bien compris, je met ke les temps ==> je lis mon fichier ou il y a deja des temps, je les met dans un tableau de float, je prend ke les meilleurs temps, je le classe et hop je l'écris dans mon fichier c ca ??
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lirey83
Messages postés
75
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
18 août 2007
13
6 janv. 2007 à 19:12
6 janv. 2007 à 19:12
Cela pourrait donner une fonction ressemblant à ça
bool insert_temps(int temps) { const unsigned int line_size=100; const unsigned int nbrecord=5; int record[nbrecord]; int i, temp; bool insert = false; char Score[line_size]; // Petite initialisation à -1 par exemple for (i=0; i<nbrecord; i++) record[i] = -1; i = 0; FILE *stream = fopen("best_record.txt","rt"); if (stream != NULL) { // Récupération des données do { if (fgets(Score, line_size, stream) == NULL) continue; // Fin de fichier sscanf(Score,"%d\n",&temp); // Insertion meilleur temps if (!insert && (temps > temp)) { record[i] = temps; insert = true; i++; } if (i<nbrecord) record[i] = temp; i++; } while (! feof(stream) && (i<nbrecord)); fclose(stream); } // le temps n'a pas été inséré if ((i<nbrecord) && !insert) record[i] = temps; // Ecriture du fichier stream = fopen("best_record.txt","wt"); for (i=0; i<nbrecord; i++) if (record[i] != -1) fprintf(stream,"%d\n", record[i]); fclose(stream); return true; }: