Parcourire un fichier txt

Signaler
Messages postés
5
Date d'inscription
lundi 27 juillet 2009
Statut
Membre
Dernière intervention
28 mars 2010
-
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
Bonjour tout le monde,
Voila mon problème,j’ai un fichier txt qui contiens des données que l’etulisateur entre au début du programme,mais après il veux rechercher une certaine donnée pour la modifier,ils doit entrer cette donnée (la première ) puis on dois la comparée avec les autres données du fichier pour ensuit la modifier,sachant que le fichier contiens des données numérique et aussi des chaînes de caractères.
La questions est comment rechercher la donnée voulu dans le fichier ?
merci

3 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
montre-nous comment tu écris dans le fichier; et on pourra t'expliquer comment le lire et chercher dedans.
Messages postés
5
Date d'inscription
lundi 27 juillet 2009
Statut
Membre
Dernière intervention
28 mars 2010

d'abord voila ce que j'ai essayer de faire:
j'ai fait une structure qui dois contenir les info du fichier puis jai fait un tableau qui contiens a son tour les n de structure car ça dépend de l'itulisateur bref,voila:
#include <stdio.h>
#include <stdlib.h>
#include"structure.h"
#define n 2
int main ( )
{
    typedef boul etu[n];   int i=0;
    etu liste;
    FILE *fichier;
    fichier=fopen("C:\\Documents and Settings\\Sizixe\\Mes documents\\Projet\\codes\\BASE.txt","a");
    do
    {
    for(i=0;i<n;i++)
    fscanf(fichier,"%d %s %s %d %s %f",&liste[i].ID,&liste[i].nom,&liste[i].prenom,&liste[i].niveau,&liste[i].web,&liste[i].moyenne);
    }while( !EOF);
    for (i=0;i<n;i++)
    printf(" %d \n%s \n%s\n %d \n%s \n%f\n",liste[i].ID,liste[i].nom,liste[i].prenom,liste[i].niveau,liste[i].web,liste[i].moyenne);
    fclose(fichier);
}


et la structure est :
struct boul
 {
        int ID;
        char nom[10];
        char prenom[10];
        int niveau;
        char web[70];
        float moyenne;
 };


et en ce qui concernne le fichier voila:
1234
jack
harry
4
www.google.com
13.000000

4321
mac
tp
3
www.tp.com
14.000


ps: vous avez vue l'espace la tabulation entre 13.000000 et 4321 c la ou la 1er struct ce termine et etc. . .
et merci de votre aide
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
es-tu obligé de stocker tout tes éléments dans les chaines de caratères ?

Si non, le plus simple est fwrite :
fwrite (&liste[i] , 1 , sizeof(boul) , fichier);

pour l'écriture et fread
fread (&liste[i],1,sizeof(boul),fichier);
pour la lecture

Si tu stockes comme tu l'as fait, c'est a dire stocke une chaine représentant un int ou un float, tu devrais faire des conversions.
Dans ton exemple, tu dois lire ligne a ligne puis convertir et stocker dans la structure, c'est galère. Dans ce cas, utilise fgets.