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 :

Eclatement d'un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut Eclatement d'un fichier
    Bonjour tous le monde
    Je suis debutant en programmation en C, je rencontre en ce moment quelque problème avec la manipulation de fwrite et fread.
    A ce sujet,je voudrais faire un eclatement d'un fichier.
    A partir du fichier "Etudiants.iut" contenant un enregistrement de 10 étudiants avec leur numero, noms et leur année(1ère année ou 2nd année),je voudrais créer les fichiers "Etudiants.1a" et "Etudiants.2a" contenant respectivement les numéros et noms des étudiants de 1ère année et les numéros et noms des étudiants de 2ème année. Je ne dois pas utilisé de tableau.
    ici à ce problème, j'ai fais le code suivant :
    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
     
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    #include "AFFi.h"
    #define KMAX 50
    int main(void)
    {
     
    //declaration
    typedef
    	struct
    	{
    		char numero[6];
    		char nom[25];
    		char annee;
    	}
    Inscrits;
    Inscrits unEtu;
    FILE * desc3;
     
    //initialisation
    nbEtu1=0;
    nbEtu2=0;
     
    desc3=fopen("Etudiants.iut","rt");
    	if(desc3!=NULL)
    	{
    		fread(&unEtu,sizeof(Inscrits),1,desc3);
    		for(i=0;i<10;i++)
    		{
    			printf("Numero %s \n",unEtu.numero);
    			printf("Nom %s \n",unEtu.nom);
    			printf("Annee %c \n",unEtu.annee);
    			fread(&unEtu,sizeof(Inscrits),1,desc3);
    		}
    			fclose(desc3);
    	}
    	if(unEtu.annee=='1') // Si le numero de l'annee de l Etudiant est egal à 1 (premiere année) alors le traitement ... ça reste ambigu ici !  
    	{
    		desc4=fopen("Etudiants.1a","wt");
    		if(desc4!=NULL)
    		{
     
    			printf("%s",unEtu.numero);
    			printf("%s",unEtu.nom);
    			printf("%c",unEtu.annee);
    			fwrite(&unEtu,sizeof(Inscrits),1,desc4);
    			nbEtu1++;
    		}
    		fclose(desc4);
    	}
    	if(unEtu.annee=='2') // Si le numero de l'annee de l'Etudiant est egal à 2 ( second année) alors le traitement suivant...ambigu ici aussi !
    	{
    		desc5=fopen("Etudiants.2a","wt");
    		if(desc5!=NULL)
    		{
    			for(i=0;i<10;i++)
    			{
    				printf("%s",unEtu.numero);
    				printf("%s",unEtu.nom);
    				printf("%c",unEtu.annee);
    				fwrite(&unEtu,sizeof(Inscrits),1,desc5);
    				nbEtu2++;
    			}
    		fclose(desc5);
    		}
    	}
    	getche();
    	return 0;
    }
    En résultat je n'obtiens que le numéro du premiere Etudiants du fichier, mais pas son nom, ni son numéro d'année...
    De plus les deux fichier "Etudiants.1a" et "Etudiants.2a" ne sont toujours pas existant à l'execution du programme.
    Je vous remercie d'avance pour votre aide
    Bonne soirée

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Tu ne fais pas les choses dans le bon ordre.

    Les opérations à faire sont dans l'ordre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    - 1 Ouverture des fichiers :
    Ouvrir en lecture "Etudiants.iut" et en écriture "Etudiants.1a" et "Etudiants.2a". (voir note)
    Vérifier leur ouverture. 
    
    - 2 Lecture / Ecriture :
    Tant qu'on n'est pas arrivé à la fin du fichier "Etudiants.iut" :
       2-1 lire un enregistrement dans unEtu. (à la fin du fichier, fread() renverra 0)
       2-2 Si unEtu.annee == 1 , écrire dans le fichier "Etudiants.1a" le nom et le numéro de l'étudiant
       2-3 Si unEtu.annee == 2 , écrire dans le fichier "Etudiants.2a" le nom et le numéro de l'étudiant
    
    - 3 Fermer les trois fichiers.
    
    Note : Le format d'ouverture en mode texte est "r" ou "w", "rt" et "wt" sont non standard. 
    Il faut d'ailleurs se poser la question si les fichiers doivent être effectivement ouverts en mode texte ou plutôt en binaire.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 21
    Par défaut
    ça marche très bien maintenant !
    Je vous remercie beaucoup
    bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Eclater ligne dans un fichier de date
    Par chipster62 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/07/2015, 06h07
  2. [XL-2007] Eclatement d'un fichier sur 3 autres
    Par Pierre67 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/06/2015, 17h48
  3. Eclater un fichier xml
    Par Herveg dans le forum C#
    Réponses: 3
    Dernier message: 17/04/2012, 22h48
  4. [XL-2003] Probleme sur macro qui eclate un fichier
    Par Bernard67 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/07/2010, 14h09
  5. Eclater un fichier PDF en plusieur pdf
    Par dermac dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 25/01/2010, 13h52

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