Parcourire un fichier txt

cs_sizixe Messages postés 5 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 28 mars 2010 - 22 mars 2010 à 14:22
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 23 mars 2010 à 08:31
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

fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
22 mars 2010 à 15:42
montre-nous comment tu écris dans le fichier; et on pourra t'expliquer comment le lire et chercher dedans.
0
cs_sizixe Messages postés 5 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 28 mars 2010
22 mars 2010 à 18:39
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
0
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
23 mars 2010 à 08:31
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.
0
Rejoignez-nous