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 :

lecture d' un fichier en binaire


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 31
    Par défaut lecture d' un fichier en binaire
    Bonjour,
    mon but c'est de pouvoir lire un tableau en binaire à partir d'un fichier " test.txt" et d'afficher ce tableau.

    le fichier "test.txt" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    4
    7
    1 0 1 0 1 0 1
    1 1 1 1 1 0 1
    0 1 0 1 0 1 1
    0 0 1 1 0 1 0
    Pour la definition du tableau j'utlise la struture suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct 
    	{
    	unsigned int nb_colonnes;
    	unsigned int nb_lignes;
    	int *plan; //pointeur sur le tableau de nb_lignes * nb_colonnes
    	} Un_tab2d;
    Et voic maintenant la fonction que j'ai codé pour cela :
    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
    //lecture fichier binaire
    Un_tab2d *lire_tab2d_bin(char *nom_fichier){
    	FILE *in;
    	Un_tab2d * ptr;
    	int n;
     
    	//ouverture du fichier
    	if((in = fopen(nom_fichier, "rb")) == NULL){
    		perror("lire_tab2d_bin");
    		exit(1);
    	}
     
    	//allocation du tableau ptr->plan
    	ptr = malloc(sizeof(Un_tab2d));
    	fscanf(in, "%d", &(ptr->nb_lignes));
    	fscanf(in, "%d", &(ptr->nb_colonnes));
    	printf("lignes = %d, colonnes = %d\n", ptr->nb_lignes, ptr->nb_colonnes);
     
    	ptr->plan = malloc((ptr->nb_lignes)*(ptr->nb_lignes)*sizeof(int));
     
    	n = fread(ptr->plan, sizeof(int), (ptr->nb_lignes)*(ptr->nb_colonnes), in);
     
    	printf(" n = %d\n", n);
    	affiche_tab(ptr);
     
    	fclose(in);
    	return ptr;
    }

    et voici le resutat lors de l exécution qui n'a rien à voir avec ce que j'ai voulu faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    lignes = 4, colonnes = 7
     n = 14
    824193290 824193312 824193312 822751520 824193056 824193056 824193056
    807416074 807416096 807416096 822751520 824193312 824193312 824193312
    2592  0  0 134089  0  0  0
     0  0  0  0  0  0  0
    Alors s'il vous plait n'hésiter pas à me donner vos suggestions.
    Je vous remercie pour tout aide.

  2. #2
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Citation Envoyé par Msakeni
    mon but c'est de pouvoir lire un tableau en binaire à partir d'un fichier " test.txt" et d'afficher ce tableau.
    <...>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <...>
    	n = fread(ptr->plan, sizeof(int), (ptr->nb_lignes)*(ptr->nb_colonnes), in);
    <...>
    Or le fichier fourni est un fichier texte.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Msakeni Voir le message
    Bonjour,
    mon but c'est de pouvoir lire un tableau en binaire à partir d'un fichier " test.txt" et d'afficher ce tableau.

    le fichier "test.txt" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    4
    7
    1 0 1 0 1 0 1
    1 1 1 1 1 0 1
    0 1 0 1 0 1 1
    0 0 1 1 0 1 0
    Il n'y a rien de binaire là dedans...

    C'est un fichier texte. Il faut donc l'ouvrir avec "r" et le lre ligne à ligne avec fgets(). Ensuite, on traite chaque valeur de la ligne. Si le format est fixe, on peut utiliser sscanf() avec des "%d". Si il est variable (les 2 premières valeurs semblent être des dimensions), on fait des boucles...

Discussions similaires

  1. Lecture d'un fichier en binaire pour stockage BLOB
    Par crocotim dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/07/2007, 14h20
  2. lecture d'un fichier binaire
    Par Tonta dans le forum C++
    Réponses: 1
    Dernier message: 14/04/2006, 06h53
  3. lecture d'un fichier binaire en VB
    Par olivier] dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/12/2005, 11h17
  4. Lecture d'un fichier binaire
    Par Gloubie dans le forum Langage
    Réponses: 9
    Dernier message: 05/12/2005, 12h51
  5. Optimisation lecture d'un fichier en binaire
    Par User dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/10/2005, 21h08

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