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 :

Impossible de lire dans un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Par défaut Impossible de lire dans un fichier
    Bonjour
    J'essaie d'écrire des donnés brut dans un fichier puis de les lire.
    Plus précisément j'essaie d'écrire 81 entiers d'un tableau dans un fichier.
    fopen et fwrite ne revoie pas d'erreur mais fread ne lis aucun caractère.

    Le but de la structure et d'avoir de quoi travailler proprement dans un sudoku et à un niveau un peu plus élevée.
    Voilà le code :

    le main

    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
    #include "struct.h"
    #include <stdlib.h>
    #include <stdio.h>
     
    int main()
    { 
      sudoku S1= creer();
      sudoku S2=NULL;
      writeValeur(S1,0,0,1);
      printf("S1 :\n");
      affiche(S1);
      sauver(S1,"essai.sdk");
      S2=charger("essai.sdk");
      printf("S2 :\n");
      affiche(S2);
      return 1;
    }
    Le fichier struct.c

    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
    void sauver(sudoku S,char* nom)
    {
      FILE* pFichier=NULL;
      testSuNull(S,"sauver");
      pFichier=fopen(nom,"w");
      if (pFichier==NULL)
        erreur("sauver","ipossible d'ouvrir le fichier");
      if(fwrite(S,sizeof(int),81,pFichier)!=81)
        erreur("sauver","impossible d'ecrire dans le fichier"); 
    }
     
    sudoku charger(char* nom)
    {
      FILE* pFichier=NULL;
      sudoku S=creer();
      int i;
      pFichier=fopen(nom,"r");
      if (pFichier==NULL)
        erreur("charger","ipossible d'ouvrir le fichier");
      i=fread(S,sizeof(int),81,pFichier);
      fprintf(stderr,"i = %d\n",i);
      if(i!=81)
          erreur("charger","fichier corrompu");
      return S;
    }
    Et voila ce qu'affiche bash.

    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
    mooglwy : ~/Cours/Projet-info/c/redo$make
    gcc -c -Wall struct.c
    gcc -c -Wall test.c
    gcc struct.o test.o -o test
    mooglwy : ~/Cours/Projet-info/c/redo$./test 
    S1 :
    100  000  000
    000  000  000
    000  000  000
     
    000  000  000
    000  000  000
    000  000  000
     
    000  000  000
    000  000  000
    000  000  000
    i = 0
    Erreur dans charger : fichier corrompu
    Je comprends pas trop d'où peut venir le problème, merci de m'aider.

  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
    Dans les fonctions sauver et charger, les fichiers ne sont pas fermés.
    Je ne sais pas ce qui se passe lorsque on fait deux fopen sans fermer le fichier entre , notamment si le buffer d'écriture est recopié sur le fichier comme conséquence du deuxième fopen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Par défaut
    Ah oui j'ai complètement oublié de fermer le fichier merci. Je vérifie ça et j'édite.

    C'était ça merci.

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

Discussions similaires

  1. lire dans un fichier .txt
    Par Baptiste Wicht dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 17/12/2005, 18h31
  2. Réponses: 4
    Dernier message: 01/12/2005, 01h01
  3. Ecrire et lire dans un fichier texte
    Par podz dans le forum C
    Réponses: 3
    Dernier message: 25/10/2005, 16h57
  4. impossible d'ecrire dans un fichier...
    Par cyberm41 dans le forum Access
    Réponses: 4
    Dernier message: 25/10/2005, 09h18
  5. Réponses: 18
    Dernier message: 09/08/2005, 12h57

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