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 :

aide pour lecture dans un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Par défaut aide pour lecture dans un fichier
    salut tout le monde.
    Dans le cadre d'un BE a l'ecole, je doit lire dans un fichier les coordonnées d'une partie othello, ma partie sera stocké ds un fichier "xxxx.dat", le nom etant donné par l'utilisateur.
    la structure de mon fichier "xxxx.dat" est:
    1
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 1 2 0 0 0
    0 0 0 2 1 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0

    en fait je veut mettre le premier "1" dans une variable "joueur" de type int, et le reste ds un tableau deux dimension 8x8 de int, et ne pas prendre compte des tabulations et des retours chariot. j'ai essayé de faire quelque chose mais ca me met n'importe quoi ds mes deux variables.

    voila ce que j'ai fait:

    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 charger()
    {
    int joueur;
    int grille[8][8];
    char nom[20];
    FILE * f;
     
    printf("Entrer le nom du fichier: ");
    scanf("%s",nom);
    f = fopen(nom,"r");
    fscanf(f,"%d",&joueur);
    fscanf(f,"\n");
    for(i = 0;i < 8;i++)
    {
    for(j = 0;j < 8;j++)
    {
    fscanf(f,"%d",grille[8][8]);
    }
    fscanf(f,"\n");
    }
     
    .....
    apres il y a des truc...
    ....
    }
    aidez moi svp, il me reste plus de temps avant de rendre mon be..
    merci beaucoup d'avance...^^

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Je pense que plusieurs solutions sont possible mais j'aurais peut-être lu le fichier avec fgetc tout en passant outre les caractères type '\n' et les espaces, le reste n'est que du remplissage du tableau donc pas spécialement de problèmes !

    Fait et post ton code complet de ta fonction en cas de problèmes
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Par défaut
    resalut,

    voila, j'ai suivi vos conseils, et j'ai essayé d'utilider fgetc comme tu ma dit et voila ma fonction que je ne pense pas qu'elle fait ce que je veut:

    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
    void charger(char fic[20])
    {
         int i,j,joueur,grille[8][8];
         char tmp;
         FILE*f;
         f=fopen(fic,"r");
         joueur=fgetc(f);
         i=0;
         j=0;
         while(tmp = fgetc(f)!= EOF)
         {
                   if(tmp!='\t'&&tmp!='\n')
                   {
                                           grille[i][j] = (int)tmp;
                                           j++;
                   }
                   if(j==8)
                   {
                           j=0;
                           i++;
                   }
                   if(i==8&&j==8)
                   {
                           j=0;
                           i=0;
                   }
                   tmp = fgetc(f);
         }       
         fclose(f);
    	printf("%d\n",joueur);
          system("Pause");
          for(i=0;i<8;i++)
          {
                          for(j=0;j<8;j++)
                          {
                                          printf("%d\t",grille[i][j]);
                          }
                          printf("\n");
          }
          system("Pause");
    }

    et voici ce qui s'affiche:

    1
    Appuyez sur une touche pour continuer...
    1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1
    Appuyez sur une touche pour continuer...

    avec le meme fichier que précédement.

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Attention aux parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(tmp = fgetc(f)!= EOF)
    Faux, tmp prend la valeur fgetc(f) != EOF donc toujours 1 !
    Il faux ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((tmp = fgetc(f))!= EOF)
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Par défaut
    ouai mais quant je met des parentheses il m'affiche:


    48
    Appuyez sur une touche pour continuer...
    48 48 48 48 48 48 48 48
    48 48 48 48 48 48 48 48
    48 48 48 48 48 48 48 48
    48 48 48 49 50 48 48 48
    48 48 48 50 49 48 48 48
    48 48 48 48 48 48 48 48
    48 48 48 48 48 48 48 48
    48 48 48 48 48 48 48 48
    Appuyez sur une touche pour continuer...

    je comprend rien du tout, pourquoi il me rajoute 48 a chaque fois???!!

  6. #6
    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 hichamo
    ouai mais quant je met des parentheses il m'affiche:

    48

    je comprend rien du tout, pourquoi il me rajoute 48 a chaque fois???!!
    Parce que c'est exactement ce qu'il y a dans ton fichier. Comme tu ne t'intéresses qu'aux caractères '0', '1' et '2', tu peux retirer '0' avant d'écrire dans le tableau. Ca fera la conversion 'texte -> binaire (rustique et limité, mais adaptée à ce cas précis).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       grille[i][j] = tmp - '0';
    NOTA : je ne recommande pas ces méthodes peu orthodoxes...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2013, 14h34
  2. Aide pour écriture dans un fichier
    Par tbr67fr dans le forum Général Python
    Réponses: 17
    Dernier message: 28/04/2011, 17h11
  3. Réponses: 5
    Dernier message: 08/10/2008, 09h14
  4. [VB6] Api pour supprimer dans un fichier INI
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/02/2003, 08h16

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