Partage
  • Partager sur Facebook
  • Partager sur Twitter

dirent.h

problème de points oO

Sujet résolu
    16 août 2006 à 13:13:08

    Bonjour tout le monde !

    Je viens de lire le header de dirent.h, j'ai codé mon premier lecteur de dossier avec (très basique, juste pour voir les fonctions) et j'ai déja un problème:
    mon programme ouvre le dossier, il lit les fichiers à l'interieur tant... qu'il y en a.
    Jusque la tout va bien, mais au moment où j'affiche les fichiers repérés, ça me trouve en plus deux fichiers du nom de "." et ".." o_O !

    Voici le code :

    #include <stdio.h>
    #include <dirent.h>

    int main(void)
    {
            DIR *direction=NULL;
            struct dirent *fichier=NULL;

            direction=opendir("\\dossier");

        if ( direction!=NULL )
        {
            while ( fichier=readdir(direction) )
                printf("%s\\n", fichier->d_name);

            closedir(direction);
        }

            return 0;
    }


    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      16 août 2006 à 13:17:41

      C'est normal, . représente le dossier courant et .. représente le dossier parent. Si tu veux t'en "débarasser", comme tu fait une boucle, tu peux ne pas prendre en compte les deux premier. Par exemple, tu stocke les noms de fichiers dans un tableau et après lors du traitement tu commences à l'indice 2.
      • Partager sur Facebook
      • Partager sur Twitter
        16 août 2006 à 13:31:55

        Merci beaucoup !

        Sinon, je n'ai pas oublier de fermer quelquechose, parceque j'oublis souvent un freesurface, ou un close(jesaispasquoi);, donc si vous remarquez une ligne manquante, signalez le !

        EDIT: Une derniere question: Esque cette librairie est portable ??

        Merci d'avance.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          16 août 2006 à 16:20:07

          La struct DIR est nommé comme ceci car elle représente un directory (répertoire en anglais), et dirent est une "directory entity", structure représentant un item qui peut être contenu dans un dossier (un fichier ou un autre dossier).

          Cette librairie est portable, puisqu'elle appartient a la norme POSIX me semble-t-il.
          • Partager sur Facebook
          • Partager sur Twitter
            16 août 2006 à 19:33:14

            J'ai moi aussi une question quant à cette librairie : Une fois que l'on a notre struct dirent* de retour, comment savoir si elle représente un fichier ou un dossier ? j'ai bien cherché, mais la meilleure solution que j'ai trouvé consiste à l'ouvrir en tant que fichier, puis de voir si ce fichier vaut NULL ou pas... C'est pas très beau, ni très optimisé (d'où ma question).

            Merci d'avance pour vos réponses (et Désolé pour le squat de topic)
            • Partager sur Facebook
            • Partager sur Twitter
              16 août 2006 à 23:04:05

              Derniere question, est-ce que sys/stat.h est portable ?

              J'ai posté mon code de l'explorateur de dossiers sur le topic cité sur le message juste au dessus (me suis trompé)...

              Merci beaucoup !
              • Partager sur Facebook
              • Partager sur Twitter
                17 août 2006 à 6:12:56

                J'ai répondu sur l'autre topic mais je le fait aussi ici comme ça je suis sur que tu le vois.
                Oui c'est portable.
                • Partager sur Facebook
                • Partager sur Twitter

                dirent.h

                × 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