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 :

Problème de lecture dans un fichier.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 3
    Par défaut Problème de lecture dans un fichier.
    Bonjour,

    Cela fait 2 jours que je suis sur un problème avec un code qui devrait me permettre de lire des matrices (20x20 max) et les mettre ensuite dans dans un tableau 3 dimension pour constituer des puzzles après.

    Mon fichier doit ressembler à ça :
    Citation Envoyé par Level
    1111
    1211
    1312;
    1111111
    2221111
    3122111;
    ....
    La fin d'une matrice est déclarée par ";".

    Mon code est le 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
     
    int main() {
     
    FILE *level;
    int x,y,z;
     
    // ouverture du fichier
    level=fopen("level.txt","r");
     
     
    // Création d'un tableau 3 dimension pour enregister les niveaux. int a[10][20][20];
    int i=0;
    x=0;
     
    // intialisation du tableau
    for(z=0; z<10; z++){
    for (x=0; x<20;x++){
    for (y=0;y<20;y++){
    a[z][x][y] = 4;
    }
    }
    }
     
         while(getc(level)!= EOF){
     
               do{
                 y=0;
                    do {
     
              a[i][x][y]=getc(level);
                    y++;
                   }while(getc(level)!='\n');
                 x++;
     }while(getc(level)!=';');
    i++;
    x=0;
    }
     
     
     
    for (y=0;y<20;y++){
    printf("%d", a[0][0][y]);
    //}
     
     
    int fclose(FILE* level);
     
    }

    Mais ça ne fonctionne pas comme je le souhaite. J'ai bien cherché mais vainement.
    Je vous remercie d'avance.
    Bonne soirée.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 15
    Par défaut
    Bonjour,

    l'assignation de x au dessus d'un for est inutile,
    et ensuite, elle intervient trop tard, en bas du dernier while... il faudrait supprimer la premiere (pour la forme), et placer la deuxieme au tout debut de la boucle qui teste le retour de getc.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Salut

    Pas tout examiné en détail mais je remarque que tu fais un getc() dans le while et un second getc() dans le corps du while. Avec cette méthode tu sautes un caractère sur deux (plus les getc() qui sont après bref qqchose d'assez cafouilleux)

    De plus, tu fais a[i][x][y]=getc(level). Mais le problème, c'est que si le fichier contient la valeur "7", toi tu ne récupères pas le nombre 7 mais le caractère '7' (qui vaut 55 en décimal si je ne me trompe pas).

    Si tu veux récupérer le nombre "7", il te faut écrire a[i][x][y]=getc(level) - '0'
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [C ANSI] Problème de lecture dans un fichier
    Par F0ul dans le forum Débuter
    Réponses: 7
    Dernier message: 06/02/2008, 14h00
  2. [POI] Problème écriture/lecture dans un fichier Excel
    Par steuve dans le forum Documents
    Réponses: 6
    Dernier message: 02/07/2007, 15h47
  3. Problème de lecture dans un fichier texte.
    Par Mike888 dans le forum C
    Réponses: 3
    Dernier message: 24/05/2007, 11h45
  4. problème de lecture dans un fichier
    Par phy4me dans le forum Fortran
    Réponses: 1
    Dernier message: 20/05/2007, 20h55
  5. Problème de lecture dans un fichier xml
    Par Pyra dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 00h13

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