IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Lire dans un fichier binaire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut Lire dans un fichier binaire
    Je veux mettre ce qu'il y a dans le fichier texte dans des maillons, voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
     
     
    typedef struct Voiture        //Définition de la structure Voiture
    {
            char marque[20];
            char modele[20];
            char puissance[3];
            struct Voiture *suivant;
    }Voiture;
     
     
    void Creer (Voiture **p);
    void Ecrire (Voiture *p);
    void Lecture (void);
     
    int main(void)                 
    {      
     
          Voiture *tete=NULL;
    	  Creer (&tete);
    	  //Creer (&tete);
    	  Ecrire(tete);
    	  Lecture();
    	  //system("cls");
    	 // printf("%s\n",tete->marque);
    	  //printf("%s\n",tete->suivant->marque);
          free(tete); tete=NULL; /* il faut liberer la memoire. C'est tres imporant */
    	  return EXIT_SUCCESS; 
     
     
     }
     
    void Creer (Voiture **p)        //Définition de la fonction Creer qui est de type Voiture
    {		
    		Voiture *voit=malloc(sizeof *voit);
    		if(voit != NULL)
    		{
    			printf("Entrez la marque :\n");
    			scanf("%s",&(voit->marque));
    			printf("Entrez le modele :\n");
    			scanf("%s",&(voit->modele));
    			printf("Entrez la puissance :\n");
    			scanf("%s",&(voit->puissance));
    			voit->suivant=*p;
    			*p=voit;
    		}        
    }
    void Ecrire(Voiture *p)
    {	
     
    	FILE *fic = NULL;
    	fic = fopen("c:\\test.txt", "wb");
    	while(p!=NULL)
    	{
    		fprintf(fic,"%s\n",p->marque);
    		fprintf(fic,"%s\n",p->modele);
    		fprintf(fic,"%s\n",p->puissance);
    		p=p->suivant;
    	}
    	fclose(fic);
    	fic=NULL;
    }
    void Lecture (void)
    {	
    	char ligne[200];
    	Voiture *voit=malloc(sizeof *voit);
    	FILE *fic = NULL;
    	fic = fopen("c:\\test.txt", "rb");
    	while(fgets(ligne,200,fic))
    	{
    		puts(ligne);
    	}
    	fclose(fic);
    }
    C'est ds la fonction Lecture, je ne vois pas comment mettre les info du fichier texte dans des maillons...

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par poche
    Je veux mettre ce qu'il y a dans le fichier texte dans des maillons, voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
     
     
    typedef struct Voiture        //Définition de la structure Voiture
    {
            char marque[20];
            char modele[20];
            char puissance[3];
            struct Voiture *suivant;
    }Voiture;
     
     
    void Creer (Voiture **p);
    void Ecrire (Voiture *p);
    void Lecture (void);
     
    int main(void)                 
    {      
     
          Voiture *tete=NULL;
    	  Creer (&tete);
    	  //Creer (&tete);
    	  Ecrire(tete);
    	  Lecture();
    	  //system("cls");
    	 // printf("%s\n",tete->marque);
    	  //printf("%s\n",tete->suivant->marque);
          free(tete); tete=NULL; /* il faut liberer la memoire. C'est tres imporant */
    	  return EXIT_SUCCESS; 
     
     
     }
     
    void Creer (Voiture **p)        //Définition de la fonction Creer qui est de type Voiture
    {		
    		Voiture *voit=malloc(sizeof *voit);
    		if(voit != NULL)
    		{
    			printf("Entrez la marque :\n");
    			scanf("%s",&(voit->marque));
    			printf("Entrez le modele :\n");
    			scanf("%s",&(voit->modele));
    			printf("Entrez la puissance :\n");
    			scanf("%s",&(voit->puissance));
    			voit->suivant=*p;
    			*p=voit;
    		}        
    }
    void Ecrire(Voiture *p)
    {	
     
    	FILE *fic = NULL;
    	fic = fopen("c:\\test.txt", "wb");
    	while(p!=NULL)
    	{
    		fprintf(fic,"%s\n",p->marque);
    		fprintf(fic,"%s\n",p->modele);
    		fprintf(fic,"%s\n",p->puissance);
    		p=p->suivant;
    	}
    	fclose(fic);
    	fic=NULL;
    }
    void Lecture (void)
    {	
    	char ligne[200];
    	Voiture *voit=malloc(sizeof *voit);
    	FILE *fic = NULL;
    	fic = fopen("c:\\test.txt", "rb");
    	while(fgets(ligne,200,fic))
    	{
    		puts(ligne);
    	}
    	fclose(fic);
    }
    C'est ds la fonction Lecture, je ne vois pas comment mettre les info du fichier texte dans des maillons...
    Tu as une ligne pour la marque, une pour le modèle, une pour la puissance.
    Donc tu lis une ligne pour la marque, une pour le modèle, une pour la puissance.
    A chaque fois, tu fais un strncpy() de la ligne dans le membre de la structure voulue (après avoir ajouté un "struct Voiture" à ta liste, bien sûr).

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Tu as déjà ouvert ce post http://www.developpez.net/forums/sho...d.php?t=298754 sur le même sujet...

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    ça fonctionne, mais lorsque je lance l'application pour la troisième fois, ça bug!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
     
     
    typedef struct Voiture        //Définition de la structure Voiture
    {
            char marque[20];
            char modele[20];
            char puissance[3];
            struct Voiture *suivant;
    }Voiture;
     
     
    void Creer (Voiture **p);
    void Ecrire (Voiture *p);
    void Lecture (Voiture **p);
    //void Afficher (Voiture *p);
     
    int main(void)                 
    {      
     
          Voiture *tete=NULL;
          Lecture(&tete);
    	  Creer (&tete);
    	  Ecrire(tete);
          free(tete); tete=NULL; /* il faut liberer la memoire. C'est tres imporant */
    	  return EXIT_SUCCESS;     
     }
     
    void Creer (Voiture **p)        //Définition de la fonction Creer qui est de type Voiture
    {		
    		Voiture *voit=malloc(sizeof *voit);
    		if(voit!= NULL)
    		{
    			printf("Entrez la marque :\n");
    			scanf("%s",&(voit->marque));
    			printf("Entrez le modele :\n");
    			scanf("%s",&(voit->modele));
    			printf("Entrez la puissance :\n");
    			scanf("%s",&(voit->puissance));
    			voit->suivant=*p;
    			*p=voit;
    		}        
    }
    void Ecrire(Voiture *p)
    {	
    	FILE *fic = NULL;
    	fic = fopen("f:\\test.txt", "wb");
    	while(p!=NULL)
    	{
    		fprintf(fic,"%s\n",p->marque);
    		puts(p->marque);
    		fprintf(fic,"%s\n",p->modele);
    		fprintf(fic,"%s\n",p->puissance);
    		p=p->suivant;
    	}
    	fclose(fic);
    	fic=NULL;
    }
    void Lecture (Voiture **p)
    {	
    	Voiture *voit=malloc(sizeof *voit);
    	if(voit != NULL)
    	{
    	FILE *fic = NULL;
    	fic = fopen("f:\\test.txt", "rb");
    	while(fgets(voit->marque,20,fic))
    	{
     
    		fgets(voit->modele,20,fic);
    		fgets(voit->puissance,20,fic);
    		voit->suivant=*p;
    		*p=voit;
    	}
    	fclose(fic);
    	}
    }
    sa bug, le programme reste dans la boucle de la fonction ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void Ecrire(Voiture *p)
    {	
    	FILE *fic = NULL;
    	fic = fopen("f:\\test.txt", "wb");
    	while(p!=NULL)
    	{
    		fprintf(fic,"%s\n",p->marque);
    		puts(p->marque);
    		fprintf(fic,"%s\n",p->modele);
    		fprintf(fic,"%s\n",p->puissance);
    		p=p->suivant;
    	}
    	fclose(fic);
    	fic=NULL;
    }

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    Citation Envoyé par David.Schris
    Tu as une ligne pour la marque, une pour le modèle, une pour la puissance.
    Donc tu lis une ligne pour la marque, une pour le modèle, une pour la puissance.
    A chaque fois, tu fais un strncpy() de la ligne dans le membre de la structure voulue (après avoir ajouté un "struct Voiture" à ta liste, bien sûr).

    je vois pas du tout comment faire cela avec strncpy(), peux tu me donner un petit exemple d'application STP

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/04/2014, 15h02
  2. lire dans un fichier binaire
    Par johncrom dans le forum C
    Réponses: 6
    Dernier message: 13/10/2008, 10h22
  3. Comment lire une chaîne dans un fichier binaire?
    Par dot-_-net dans le forum Débuter
    Réponses: 9
    Dernier message: 18/05/2008, 23h13
  4. Réponses: 10
    Dernier message: 09/02/2008, 11h40
  5. Lire et écrire dans un fichier binaire
    Par poche dans le forum C
    Réponses: 17
    Dernier message: 19/03/2007, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo