Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher tout un fichier

Sujet résolu
    18 février 2006 à 20:14:55

    Bonsoir.

    J'ai essayer de créer une fonction qui lit tout un fichier.
    Mais ce que je n'arrive pas à faire, c'est que le fonction lise toutes les lignes du fichier et pas seulement la première.

    void afficher(const char* fichier)
    {
        char contenu[TAILLE_MAX] = "";
        FILE* fopened = NULL;

        fopened = fopen(fichier, "r");

        if(fopened != NULL)
        {
            while(/* Condition pour s'arrêter à la fin du fichier */)
            {
                fgets(contenu, TAILLE_MAX, fopened);
                printf("%s", contenu);
            }

        }

        else
            printf("Erreur: impossible d'ouvrir le fichier!");

        fclose(fopened);
    }

    J'ai essayé plusieurs conditions mais ça me fait des boubles infinies.
    while(contenu != EOF)
    // Ou...
    while(SEEK_SET != SEEK_END)
    // ...

    Alors j'ai pensé à ça:
    while(ftell(fopened) != fcurseur_fin(fopened))

    J'ai donc créé la fonction fcurseur_fin:
    long fcurseur_fin(FILE* fichier)
    {
        long curseur_fin = 0;

        fseek(fichier, 0, SEEK_END);
        curseur_fin = ftell(fichier);
        fseek(fichier, 0, SEEK_SET);

        return curseur_fin;
    }

    Quand je compile, j'ai ce message:

    Citation

    undefined reference to `curseur_fin'



    Pourtant je ne vois pas d'erreur avec ma variable...

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2006 à 20:17:58

      Ton erreur viens du fait que EOF est un caractère et non une chaine de caractère comme contenu !
      Essaye contenu[0] != EOF
      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2006 à 20:19:57

        euhm essaye


        while (contenu != NULL )
        {
        contenu = fgets(contenu, TAILLE_MAX, fopened);
        }
        • Partager sur Facebook
        • Partager sur Twitter
          18 février 2006 à 20:26:25

          Natim -> J'ai toujours une boucle infinie.

          Nautré125error -> J'obtiens l'erreur:

          Citation

          incompatible types in assignment



          Je pense qu'avec ma fonction ça peut marcher mais il faut que fcurseur_fin marche
          • Partager sur Facebook
          • Partager sur Twitter
            18 février 2006 à 20:33:37

            euhm bon comme d'hab je vais faire un truc de barbare


                char Mot[55], ligne[55];
                int NbLigne =0;
                while (fgets (ligne, 55, fichier_mots) != NULL)
                {
                    NbLigne++;
                }
                for (i=0;i<=NbLigne;i++)
                {
                    Mot = fgets (Mot, 55, fichier_mots);
                    printf("%s", Mot)

                }



            c'est mega barbare, et je suis pas sur que ca marche correctement.
            • Partager sur Facebook
            • Partager sur Twitter
              18 février 2006 à 20:38:55

              Citation

              incompatible types in assignment


              à la ligne
              Mot = fgets (Mot, 55, fichier_mots);

              J'ai remplacé fichier_mots par fopened et mis le ; après le printf.
              • Partager sur Facebook
              • Partager sur Twitter
                18 février 2006 à 20:59:16

                Le mieu, c'est de le lire caractères par caractères tant que l'on a pas EOF
                • Partager sur Facebook
                • Partager sur Twitter
                  18 février 2006 à 21:04:33

                  J'avais complètement oublié cette solution. ^^
                  En tout cas merci, ça marche.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Afficher tout un fichier

                  × 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