Lire d un fichier txt en c

albatros0086 Messages postés 7 Statut Membre -  
 Utilisateur anonyme -
Bonjour,
sos
je veux lire d un fichier texte en langage c contient des mots separer par "entrer" et les mettre dans une liste de structure contien chaqune 4 champs
qq pe m aider a ecrire la fonction qui fé la remplissage du liste a partir du TXT?

typedef struct pers
{char NOM[100];
char PRE[100];
float num;
char ville[50];
pers *suiv;
}Pers;

typedef struct
{int nb;
Pers * premier;
}liste ;
Configuration: Windows Vista Internet Explorer 7.0

4 réponses

  1. Utilisateur anonyme
     
    La structure du fichier texte ?
    0
  2. albatros0086 Messages postés 7 Statut Membre
     
    un fichier texte ecrite deja je ve le recuperer sous formes des structure des personnes constitant une liste chainé chaque personne constitué par 4 champs (les champs sont ecri dans l ordre personne apres personne ds le fichier)
    0
  3. saoud.k Messages postés 15 Statut Membre
     
    si tu essaie d'etre un peu plus préçis g pourrais t'aider ..........................
    0
  4. albatros0086 Messages postés 7 Statut Membre
     
    ok
    j ai un texte (*.txt )exp:
    haythem
    azerty
    22222222
    YTREZA
    SALAH
    POIUYTR
    3456544
    szdefrgthy

    j ai l structure suivante:

    typedef struct pers
    {char NOM[100];
    char PRENOM[100];
    int NUMERO_TEL;
    char ville[50];
    pers *suiv;
    }Pers;

    une liste simplement chainée

    typedef struct
    {int nb;
    Pers * premier;
    }liste ;

    je veux construire une liste L de type liste qui contient (dans notre exp ) 2 personnes (type pers) a partir de ce fichier txt
    merci d avance :)
    0
    1. Utilisateur anonyme
       
      re !

      En fait tu dois lire ton fichier texte, et récuperer les champs 4 par 4. La fin de ton fichier texte doit se finir par une ligne vide.

      Bon je suis gentil je te donne un code qui lit le fichier. A toi de faire le reste (avec ça tu devrait faire ton programme en 30mn à tout casser).

      Au lieu d'afficher tu remplis ta structure etc...

      ***************************Fichier C********************************
      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      
      //nombre de caractères dans une ligne du fichier (256 toi c'est 100 ou 50 ...)
      #define BUFFER 256 
      
      int main(void)
      {
      	FILE *fichier;
      	char *ligne = (char*)malloc(sizeof(char)*BUFFER);
      	int i;
      	fichier = fopen("data.txt", "r");
      
              //si le fichier existe
      	if(fichier != NULL)
      	{
      		i=1;
                      //tant qu'on est pas à la fin
      		while(!feof(fichier))
      		{
                              //lit la première ligne, si c'est un \n alors j'arrête
      			fgets(ligne,BUFFER,fichier);
      			if(strcmp(ligne,"\n")!=0)
      			{
      				printf("*********** Personne %d ***********\n\n",i);
      				
      				printf("Nom    : %s\n", ligne);
      				
      				fgets(ligne,BUFFER,fichier);
      				printf("Prenom : %s\n", ligne);
      				
      				fgets(ligne,BUFFER,fichier); //ici il faut caster en int pour ta structure
      				printf("Tel    : %s\n", ligne);
      				
      				fgets(ligne,BUFFER,fichier);
      				printf("Ville  : %s\n", ligne);
      
      				i++;
      			}
                              else break; //pas très propre le break, mais il fera l'affaire
      
      		}
      
      		fclose(fichier);
      	}
      	else
      	{
      		printf("Le fichier n'existe pas");
      	}
      
              free(ligne); //libère la mémoire
      	return 0;
      }
      *******************************************************************
      


      ****************************** fichier texte *****************************
      jean
      dupont
      0102030405
      paris
      ahmet
      leboss
      0304050607
      reims
      albatros
      deCCM
      0607080910
      paris
      
      ********************************************
      


      A toi de modifier le Buffer, au lieu de prendre ligne tu peux faire plusieurs chaines etc... mais la base est là !

      Bon courage !
      0