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 avec readdir de dirent.h


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 74
    Par défaut Problème avec readdir de dirent.h
    Bonjour,

    J'aimerai comprendre pourquoi ce code :
    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
    int main(int argc, char *argv[])
    {
    DIR *dossier = NULL;
    dirent *ent = NULL;
     
    dossier = opendir("/home/flynet/Bureau/dossier2");
    if(dossier != NULL)
    {
    while((ent=readdir(dossier)) != NULL)
    printf("%s\n", (ent->d_name));
     
    closedir(dossier);
    }
     
    return 0;
    }
    me renvoie cela :
    .
    dossier2
    dossier
    ..
    fichier

    Je ne devrai pas avoir plutôt le '.' en premier puis le '..' en deuxièmre position ? Ce qui est curieux c'est que dans un dossier comme Documents, il me donne le bon ordre.

    Si quelqu'un pouvait m'expliquer ce qui coche, je lui en serait reconnaissant !

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Par défaut
    quelles librairies utilises-tu?

  3. #3
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Rien, dans la documentation de opendir ou de readdir, du moins sous Linux, n'est dit sur l'ordre dans lequel tu récupères tes fichiers donc tu ne dois rien présumer.

    Et d'ailleurs, quel serait le "bon" ordre ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 74
    Par défaut
    Bonjour,

    j'utilise les bibliothèques standards avec dirent.h et sys/types.h.

    Sinon je pensais que le dossier courant '.' devait être le premier suivi du dossier précédent '..', du moins un peu comme 'ls'.

  5. #5
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Mais ls les affiche dans un ordre donné et, visiblement, pas dans l'ordre où il les récupère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     List information about the FILEs (the current directory by default).
    Sort entries alphabetically if none of -cftuvSUX nor --sort.
    C'est plus qu'une écriture à la volée que ls effectue : il trie ce qu'il récupère avant d'afficher. Certaines options (je ne les ai plus en tête) permettent de modifier cet ordre.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 74
    Par défaut
    Bon si je comprends bien readdir n'est pas sensé commencé par les dossiers '.' et '..'.

    J'aimerai comprendre pourquoi quand j'utilise telldir celui-ci me renvoie un nombre normal alors que sur un tuto que j'ai trouvé sur Internet,
    on dit que sur les systèmes unix on a des chiffres faramineux pour telldir ?

    Ensuite pourquoi quand je me positione avec seekdir(dossier, 2), celui-ci me renvoie les fichiers dans le même ordre et donc à partir du 1er élèment ? par exemple j'obtiens cette liste que ce soit avec seekdir ou pas.
    fichier.txt
    .
    headers
    ..
    sources
    prog


    Dernière question, est-ce dirent.h propose une fonction pour lire la taille d'un dossier ?

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

Discussions similaires

  1. La fonction readdir() et les lettres arabes
    Par malek363 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 05/03/2015, 13h36
  2. Problème avec readdir ?
    Par chakan dans le forum Langage
    Réponses: 6
    Dernier message: 05/05/2008, 10h05
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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