Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lire un mot dans un fichier texte avec fgetc

Sujet résolu
    17 février 2017 à 21:03:55

    Bonsoir,

    J'aimerai pouvoir stocker un mot provenant d'un fichier texte.

    Le mot devra être lu caractère par caractère et sera stocké dans un tableau de caractères.

    Voici le code que j'ai pu faire :

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #include <string.h>
    
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
        char opt[100];
        int i=0;
        fichier = fopen("options.txt", "r");
        if (fichier != NULL)
        {
            while (opt[i] != 61)
            {
                opt[i] = fgetc(fichier);
                i = i + 1;
            } 
            printf("%s", opt);
        }
        fclose(fichier);
        return 0;
    }

    Je souhaite récupérer les caractères présent avant un égal (le texte de mon fichier texte est de la forme Mot=okok;)

    Pouvez vous m'aider ?

    • Partager sur Facebook
    • Partager sur Twitter
      17 février 2017 à 21:39:02

      Bonjour, 

      Actuellement, ton programme ne fonctionne pas pour une raison simple : tu testes dans ta boucle while si opt[i] est un symbole '=' or le dernier caractère lu était opt[i-1] (la dernière instruction avant la fin de la boucle est bien : i = i+1). 

      Autrement dit, il faut que tu testes : opt[i-1] != 61. 

      Attention cependant au cas où i = 0. 

      Par ailleurs, il est possible de lire tous les caractères jusqu'à égal de la manière suivante : 

      fscanf(fichier, "%[^=]", chaine);

      Si tu connais cette forme. 

      • Partager sur Facebook
      • Partager sur Twitter
        17 février 2017 à 21:47:33

        Tu as oublier de placer le '\0' ainsi il faut une bombe logique pour le placer (ça voudrais une événement qui lorsque'il va se produire le '\0' serait placé) puis la suite est un jeux d'enfant . Mais tu as dit que tu voulais lire un mot ainsi le mot serait fini si il y a un espace ou bien c'est la fin du fichier , ainsi on peut modifier le code ça donne à peu près ça :

        #include <stdio.h>
        #include <stdlib.h>
        #include <stdbool.h>
        #include <string.h>
         
        int main(int argc, char *argv[])
        {
            FILE* fichier = NULL;
            char opt[100];
            int i=0;
            int j = 0 ; //Pour la boucle
            fichier = fopen("options.txt", "r");
            if (fichier != NULL)
            {
                j = 1 ;
                while (j)
                {
                    opt[i] = fgetc(fichier);
                    if(opt[i] == ' ' || opt[i] == EOF)
                    {
                        opt[i] = '\0' ; //On place le '\0'
                        j = 0 ;
                    }
                    i++ ;
                }
                printf("%s", opt);
            }
            fclose(fichier);
            return 0;
        }



        Si tu as des difficultés a comprendre quelque chose pose moi la question .

        -
        Edité par Saad1231 17 février 2017 à 21:52:19

        • Partager sur Facebook
        • Partager sur Twitter
          17 février 2017 à 21:53:23

          Problème résolut ! Merci beaucoup pour votre aide :)

          -
          Edité par LucasTuillier 17 février 2017 à 21:54:06

          • Partager sur Facebook
          • Partager sur Twitter

          Lire un mot dans un fichier texte avec fgetc

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown