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 :

fichiers binaires et fichiers text


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut fichiers binaires et fichiers text
    salut les amis j'ai une question à vous poser.
    j'ai créé un programme en c pour lire des structures de données sous la forme nom,prenom,cin a partir d'un fichier texte nommé(personne.txt) les donnés dans le fichier sont:
    nom_1 prenom_1 B12345
    nom_2 prenom_2 A12345
    nom_3 prenom_3 C12345
    nom_4 prenom_4 D12345
    nom_5 prenom_5 E12345
    nom_6 prenom_6 G12345
    nom_7 prenom_7 F12345
    puis les mettre dans un fichier binaire ,et pour vérifier si le travail a été fait j'ai créer un tableau dont lequel j'ai copier les donnés du fichier binaire dans un tableau et après l'affichage des données du tableau j'ai trouvé que le programme affiche des choses illogiques, voila le 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
    #include<stdlib.h> 
    #include<string.h> 
    #include<stdio.h> 
     
    struct personne{ 
        char nom[20]; 
        char prenom[15]; 
        char cin[10];
    }; 
     
    typedef struct personne personne; 
     
    int main(){ 
        FILE *fichier,*out; 
        personne *liste; 
        personne tmp; 
     
        fichier=fopen("D:\\personne.txt","r"); 
     
        if(fichier==NULL) 
        {
            printf("impossible d'ouvrir le fichier"); 
            exit(1);
        } 
     
        int m=0; 
        while(fscanf(fichier,"%s%s%s",tmp.nom,tmp.prenom,tmp.cin)==3) 
            m++; 
     
        liste=(personne*)malloc(m*sizeof(personne)); 
        fseek(fichier,0,0); 
     
        for(int i=0;i<m;i++) 
            fscanf(fichier,"%s%s%s",liste[i].nom,liste[i].prenom,liste[i].cin); 
        fclose(fichier); 
     
        out=fopen("D:\\pers.data","wb"); 
        if(out==NULL) 
        {
            printf("impossible d'ouvrir le fichier"); 
            exit(1);
        } 
     
        fwrite(liste,sizeof(personne),m,out); 
        fclose(out); 
     
        FILE *fic; 
     
        fic=fopen("D:\\pers.data","rb"); 
     
        if(fic==NULL) 
        { 
            printf("impossible d'ouvrir le fichier"); 
            exit(1);
        } 
     
        fseek(fic,0,SEEK_END); 
        int n; 
        n=ftell(fic); 
        n=n/sizeof(personne); 
        printf("%d",n); 
     
        personne *T; 
        T=(personne*)malloc(n*sizeof(personne)); 
        fread(T,sizeof(personne),n,fic); 
        fclose(fic); 
     
        for(int i=0;i<n;i++){ 
            printf("\n%s",T[i].nom); 
            printf("\n%s",T[i].prenom); 
            printf("\n%s",T[i].cin);
        } 
     
        system("pause"); 
        return 0; 
    }

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,



    j'ai trouvé que le programme affiche des choses illogiques
    C'est à dire ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Entre les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fseek(fic,0,SEEK_END); 
    int n; 
    n=ftell(fic);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fread(T,sizeof(personne),n,fic);
    Il manque un retour au début du fichier.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut
    svp mais comment je peut résoudre mon problème,vous avez dit qu'il manque un retour au début du fichier comment je peux le faire

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bah même chose que tu as faite ligne 31 avec fichier
    Pour des questions de lisibilité, j'utiliserais la constante SEEK_SET.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut
    je vous remercier vivement ,chapeau

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut
    Maintenant je dois créer un autre fichier binaire indexé selon le champ cin, a paritir du fichier binaire que j'ai créer ce nouveau fichier doit contenir les éléments suivant:
    B12345 0
    A12345 1
    C12345 2
    D12345 3
    E12345 4
    G12345 5
    F12345 6
    sachant qu'on a défini un autre enregistrement

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct enregcin{
        char cin[10]; // numéro de cin
        int index;
    };   // indice
    typedef struct enregcin cin;

  8. #8
    Membre actif Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Points : 222
    Points
    222
    Par défaut
    Et c'est quoi la question?

    En passant ftell() retourne un long.


  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut code
    OK, je vais reformuler le problème de nouveau la première partie du problème c'était de convertir un fichier texte nommé "personne.txt" en un fichier binaire nommé "personne.bin" le fichier texte contient les donnée suivantes:

    nom_1 prenom_1 B12345
    nom_2 prenom_2 A12345
    nom_3 prenom_3 C12345
    nom_4 prenom_4 D12345
    nom_5 prenom_5 E12345
    nom_6 prenom_6 G12345
    nom_7 prenom_7 F12345

    ces données sont le nom le prénom et le code cin (code d'identité national) d'un ensembles de personnes.pour simplifier le problème on a déclarer deux enregistrement.

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    struct personne{ 
        char nom[20]; 
        char prenom[15]; 
        char cin[10];
    }; 
     
    typedef struct personne personne; 
     
    struct enregcin{
    char cin[10];
    int index;};
    typedef struct enregcin cin;

    la première partie j'ai déjà la fait par le code suivant:

    Code c : 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
    #include<stdlib.h> 
    #include<string.h> 
    #include<stdio.h> 
     
    struct personne{ 
        char nom[20]; 
        char prenom[15]; 
        char cin[10];
    }; 
    typedef struct personne personne; 
     
    int main(){ 
        FILE *fichier,*out; 
        personne *liste; 
        personne tmp; 
     
        fichier=fopen("D:\\personne.txt","r"); 
     
        if(fichier==NULL) 
        {
            printf("impossible d'ouvrir le fichier"); 
            exit(1);
        } 
     
        int m=0; 
        while(fscanf(fichier,"%s%s%s",tmp.nom,tmp.prenom,tmp.cin)==3) 
            m++; 
     
        liste=(personne*)malloc(m*sizeof(personne)); 
        fseek(fichier,0,0); 
     
        for(int i=0;i<m;i++) 
            fscanf(fichier,"%s%s%s",liste[i].nom,liste[i].prenom,liste[i].cin); 
        fclose(fichier); 
     
        out=fopen("D:\\pers.data","wb"); 
        if(out==NULL) 
        {
            printf("impossible d'ouvrir le fichier"); 
            exit(1);
        } 
     
        fwrite(liste,sizeof(personne),m,out); 
        fclose(out); 
         system("pause"); 
        return 0; 
    }

    maintenant je dois crée un autre fichier binaire nommé "cin.data" indexé selon le champ cin cad,il doit contenir les codes cin et des indices comme suit:

    B12345 0
    A12345 1
    C12345 2
    D12345 3
    E12345 4
    G12345 5
    F12345 6

    alors aider mois par un code pour faire ce travail.

  10. #10
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 193
    Points : 17 161
    Points
    17 161
    Par défaut
    ouvrir les deux fichiers en lecture / écriture: fopen("personne.txt", "r") et fopen("cin.bin", "w") boucler pour transposer. while, scanf, printf
    fermer les fichiers: fclose(…)

    have fun…
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut re code
    mais le probleme c'est que j'arrive pas à faire le programme.

  12. #12
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 193
    Points : 17 161
    Points
    17 161
    Par défaut
    Comment le ferais-tu si c'était une feuille imprimée et une feuille blanche?

    Tu mettrais le document devant toi, en position pour le lire, en suivant avec ton doigt ou une regle.
    Tu prendrais la feuille blanche et un stylo.
    Puis, pour chaque ligne du document, tu noterais les informations souhaitées: l'identifiant, et le numéro de la ligne lue.
    Enfin, arrivée en bas du document initial, tu le rangeras, ainsi que la copie (et le stylo par la même occasion)
    J'en déduis que tu as dans la tête le numéro de la ligne en cours, ainsi que la position de l'identifiant.

    Si tu es d'accord avec ca, remplace feuille par fichier, stylo/règle par les modes d'ouverture des fichiers (écriture ou lecture).
    Il te faudra aussi une variable pour le numéro de ligne.

    Si ton but est un exercice scolaire, ou un utilitaire vite fait, tu peux tout mettre dans le main, il y en a pour une douzaine de lignes.

    Sinon, tu peux et devrais découper en plusieurs fonctions, avec une liste, ce qui permettrait par exemple de trier les informations avant de les écrire.

    La structure que tu pourrais obtenir serait alors:
    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
    #include <stdio.h>
    int main() {
        char cin[7];
        int n=0;
        File *input, *ouput;
        if ( (output=fopen("personne.bin", "w")==NULL) {
            fprintf(stderr, "ouverture de personne.bin impossible");
            return 1;
        }
        if ( (inpit=fopen("personne.txt", "r")==NULL) {
            fclose(output);
            fprintf(stderr, "ouverture de personne.txt impossible");
            return 1;
        }
        while(fscanf(input, "%*s %*s %6s", &cin) !=EOF ) {
            //attention, la condition !=EOF est peut-être fausse, je ne sais plus...
            fprintf(output, "%s %d", cin, n++);
        }
        fclose(input);
        fclose(output);
        return 0;
    }
    Que quelqu'un corrige ce code, il ne me plait pas
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut re
    mais l'écriture et la lecture doivent se fait dans un fichier binaire

  14. #14
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 193
    Points : 17 161
    Points
    17 161
    Par défaut
    et?
    binaire, ca veut dire quoi, pour toi?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut re
    excusez moi je suis débutant,mes connaissance sur les fichiers sont faible et je pense que la différence entre les deux fichier c'est que dans un fichier text les données sont codé en code ASCII ,mais pour un fichier binaire les données sont comme dans le cas qu'on déclare un tableau,d'autre part l'extension d'un fichier text c'est ".txt" et pour un fihier binaire c'est ".bin" ou ".data"...

  16. #16
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 193
    Points : 17 161
    Points
    17 161
    Par défaut
    l'ASCII est une interprétation possible du binaire. Par exemple, la valeur 65 (0x41) est le 'A'

    On appelle binaire tout ce qui n'est pas explicitement textuel.
    par exemple, si le fichier contient les caractères "134" (0x31 0x33 0x34), c'est probablement du texte.
    S'il contient 0x5C (valeur hexadecimale de 134) c'est plutot du binaire, sauf que 0x5C est aussi le code pour le \

    Si tu n'utilises que des printf, tu devrais avoir du texte.
    Pour avoir un binaire dense, il faut utiliser autre chose, ou des spécificateurs de formats tordus.
    Cet autre chose ressemblera probablement à fput() et autres, mais je n'en sais pas plus.

    Quant à l'extension des fichiers, c'est une indication potentielle. Windows les utilise pour déterminer les types de fichiers, tandis que Linux s'en moque.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut
    je vous remercier pour l'explication,mais mon problème mais je ne sais pas écrit un code vérifier les conditions imposés (lire à partir de personne.bin le cin et écrire dans cin.bin le code d'identification et le numéro de chaque ligne.

  18. #18
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 193
    Points : 17 161
    Points
    17 161
    Par défaut
    Tu as essayé mon code?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 0
    Points
    0
    Par défaut
    mais le code que vous avez écrit permet de faire la lecture a partir du fichier binaire "personne.txt" puis l'écriture dans un fichier binaire.
    ce que je demande c'est lire à partir du fichier binaire et écrire dans un fichier binaire

  20. #20
    Membre actif Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Points : 222
    Points
    222
    Par défaut
    Ben fait toi une autre structure genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct cindata
    {
        char cin[10];
        int no;
    };
    Ensuite lit ton fichier binaire disons personne.bin avec fread() et la structure personne. Tu copies personne.cin que tu viens de lire dans cindata.cin et tu mets un compteur dans cindata.no. Reste juste à écrire la structure cindata dans un fichier avec fwrite().

    Quelque chose comme ça
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    struct personne{
        char nom[20];
        char prenom[15];
        char cin[10];
    };
     
    struct cindata
    {
        char cin[10];
        int no;
    };
     
    int main(void)
    {
        struct personne p;
        struct cindata c;
        FILE *fpo, *fpi;
        int n = 0;
     
        fpi = fopen("personne.bin", "rb");
        if(!fpi)
        {
            perror("Error: ");
            return EXIT_FAILURE;
        }
        fpo = fopen("cin.bin", "wb");
        if(!fpo)
        {
            perror("Error: ");
            fclose(fpi);
            return EXIT_FAILURE;
        }
        while(fread(&p, sizeof(struct personne), 1, fpi))
        {
            printf("%s %s\n", p.nom, p.prenom);
            strcpy(c.cin, p.cin);
            c.no = n;
            fwrite(&c, sizeof(struct cindata), 1, fpo);
            n++;
        }
        fclose(fpi);
        fclose(fpo);
        return EXIT_SUCCESS;
    }

Discussions similaires

  1. Réponses: 17
    Dernier message: 31/03/2009, 15h52
  2. Réponses: 15
    Dernier message: 28/11/2008, 17h57
  3. fichier binaire vers fichier ascii.
    Par vbk!!! dans le forum Général Python
    Réponses: 3
    Dernier message: 24/09/2008, 12h17
  4. Réponses: 6
    Dernier message: 14/03/2007, 14h36
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39

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