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 :

afficher les fichiers d'une racine avec langage c


Sujet :

C

  1. #1
    Membre habitué
    Homme Profil pro
    dev info
    Inscrit en
    Avril 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : dev info
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2012
    Messages : 9
    Par défaut afficher les fichiers d'une racine avec langage c
    bonjour tout le monde

    je voudrais savoir si il a la possibilité d'afficher le contenu d'une racine "c:\" avec le langage c sous windows ,,, voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DIR * rep = opendir(".");
     
     if (rep != NULL)
        {
    	struct dirent *lecture;
     
    	while ((lecture = readdir(lecture)) != NULL)
    	{
    	    printf("%s\n", lecture->d_name);
    	}
     
    	closedir(rep);
        }
    merci

  2. #2
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 104
    Par défaut
    A ta question principale, oui on peut afficher arborescence de ta racine
    Euh, tu as testé ton code ?

    Si oui, est ce qu'il marche ?

  3. #3
    Membre habitué
    Homme Profil pro
    dev info
    Inscrit en
    Avril 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : dev info
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2012
    Messages : 9
    Par défaut
    oui mais il affiche n'importe quoi

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    C'est à dire?
    Montre-nous un exemple.

  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 : 61
    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
    Bonjour

    ouverture (opendir) du répetoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DIR * rep = opendir(".");
    puis disparition de la variable rep dans les paramètres de la lecture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((lecture = readdir(lecture)) != NULL)
    Ca n'a aucune chance de fonctionner et je suis même étonné que ca compile. C'est comme un fprintf/fread/fwrite/... où tu ne préciserais pas le fichier (FILE *)

    Revois le prototype de la fonction readdir !

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 502
    Billets dans le blog
    1
    Par défaut
    Ah mais le compilateur (MinGW pour moi) met un bon gros warning ^^ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    d:\...\Untitled1.c||In function 'main':|
    d:\...\Untitled1.c|41|warning: passing argument 1 of 'readdir' from incompatible pointer type|
    c:\...\include\dirent.h|61|note: expected 'struct DIR *' but argument is of type 'struct dirent *'|
    ||=== Build finished: 0 errors, 1 warnings (0 minutes, 0 seconds) ===|
    Bien vu plxpy !

  7. #7
    Membre habitué
    Homme Profil pro
    dev info
    Inscrit en
    Avril 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : dev info
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2012
    Messages : 9
    Par défaut
    je travaille avec turbo c est il affiche les fichier de c:\tc\bin

  8. #8
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 502
    Billets dans le blog
    1
    Par défaut
    Tu lui as dit de regarder le dossier courant (DIR * rep = opendir(".");'), c'est ce qu'il fait. Essaye plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DIR * rep = opendir("C:\\");

  9. #9
    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 : 61
    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
    je travaille avec turbo c est il affiche les fichier de c:\tc\bin
    Ca affiche le contenu du répertoire courant : ton ouverture de répertoire se fait avec le pathname "."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DIR * rep = opendir(".");
    et pas la racine comme tu voulais je crois

    (je n'avais pas vu la reponse de Bktero)

  10. #10
    Membre habitué
    Homme Profil pro
    dev info
    Inscrit en
    Avril 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : dev info
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2012
    Messages : 9
    Par défaut
    Tu lui as dit de regarder le dossier courant (DIR * rep = opendir(".");'), c'est ce qu'il fait. Essaye plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DIR * rep = opendir("C:\\");
    j'ai reussi a afficher les dossier de la racine c mais comment preciser le genre de fichier par example *.txt voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    struct dirent *lecture;
    DIR *rep;
    cleardevice();
     
     
     printf(" les facture \n");
     
        rep = opendir("c:\\" );
        while ((lecture = readdir(rep))) {
    	printf("%s \t", lecture->d_name);
        }
        closedir(rep);
    merci d'avance

  11. #11
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Pour avoir des informations sur ton fichier : http://man.developpez.com/man2/stat.2.php
    Pour avoir l'extension de ton fichier, tu réfléchis 2 secondes.

  12. #12
    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 : 61
    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
    Citation Envoyé par fdaili
    j'ai reussi a afficher les dossier de la racine c mais ...
    ton code affiche les dossiers (répertoires) ET les fichiers

    Citation Envoyé par Neckara
    Pour avoir l'extension de ton fichier, tu réfléchis 2 secondes.
    sous-entends tu qu'il y a quelque chose "d'immédiat" ?

  13. #13
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Citation Envoyé par plxpy Voir le message
    sous-entends tu qu'il y a quelque chose "d'immédiat" ?
    La seule difficulté est de savoir si on veut récupérer l'extension "complete" ou la "dernière extension" et si on veut mettre le '.' devant l'extension ou non.
    Ex : toto.tar.gz
    Veux-tu récupérer .tar.gz ou seulement .gz ?
    Ensuite, récupérer ceci dans une chaîne de caractère revient à vouloir récupérer tous les caractères après le premier '.' ou après le dernier '.'

    Après je ne vois pas trop où est la difficulté de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *extension = nomFichier;
    while( *extension && *extension != '.' ) extension++;
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char *tmpPtr = nomFichier;
    char * extension;
    while( *tmpPtr )
    {
           if(*tmpPtr == '.')
                    extension = tmpPtr;
           tmpPtr++;
    }
    Avec strlen, malloc et strcpy si on souhaite conserver l'extension.
    Et un if(*extension) extension++; si on souhaite supprimer le '.'.

  14. #14
    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 : 61
    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
    ok

    C'est le "réflechir 2 secondes" dans le (sous-) forum "C/Debuter" qui m'a interpelé. Ce n'est pas si évident que ça et j'avais peur que tu veuilles introduire le "*.txt" quelque part (où ?) dans les fonctions utilisées (opendir, readdir)

    Donc, sur le fond, je pense qu'on est d'accord : les wild-cards ne sont pas gérés par ces fonctions et il faut faire ça "à la main", avec les fonctions traitant des chaines de caractères.

    Sinon, je ne connaissais pas avant de développer - aussi - en Python, mais il y a glob (prototype dans glob.h) qui peut aider

  15. #15
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Après je ne vois pas trop où est la difficulté de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *extension = nomFichier;
    while( *extension && *extension != '.' ) extension++;
    Voir strchr et strrchr.

Discussions similaires

  1. Afficher les données d'une bd avec primefaces
    Par sikati dans le forum JSF
    Réponses: 0
    Dernier message: 12/09/2014, 13h13
  2. [Débutant] Afficher les propriété d'une liste avec un item d'une autre liste
    Par jubourbon dans le forum Développement Sharepoint
    Réponses: 8
    Dernier message: 19/12/2013, 16h57
  3. [2.x] Comment afficher les fichiers du dossier src avec wamp
    Par Invité dans le forum Symfony
    Réponses: 0
    Dernier message: 05/06/2013, 11h18
  4. afficher les infos d'une bdd avec un area shape
    Par Invité dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 08/10/2011, 08h37
  5. [MySQL] afficher les données d'une table avec foreatch
    Par alfred5 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/10/2010, 22h35

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