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 :

Programme équivalent à DIR [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut Programme équivalent à DIR
    Bonjour, je cherche à réaliser un programme en C (multi plateforme) et sans utiliser de toolkit qui permet de répertoirier les dossiers et fichiers ainsi que des infos comme "modifier le, type ...". Pouvez-vous me donner quelques pistes. Merci d'avance

    PS: Je suis en 1 S SVT donc ce n'est pas pour mes études mais pour moi J'aime me fixer des objectifs et les atteindre Je n'ai pas de limitte de temps.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    [QUOTE=kiki67100;2479050]Pour lister, le code se trouve dans les pages source du site
    http://c.developpez.com/sources/?page=V#FICHIER_lister

    Pour les infos, il te faut utiliser la fonction fstat.
    http://man.developpez.com/man2/fstat.2.php

  3. #3
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    Merci pour tout Je vais voir ca, je post résolu

  4. #4
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <dirent.h>
    void usage(char *name)
    {
       printf("Usage : %s [directory]\n", name);
    }
    int lister(char *directory)
    {
       DIR *dir = NULL;
       struct dirent *file = NULL;
       if((dir = opendir(directory)) == NULL)
       {
          return EXIT_FAILURE;
       }
       printf("Repertoire %s :\n", directory);
     
       while((file = readdir(dir)) != NULL)
       {
          if(strcmp(file->d_name, ".") && strcmp(file->d_name, ".."))
          {
             if(file->d_type == DT_DIR)
             {
                lister(strncat(directory, file->d_name, 256));
             }
             else
             {
                printf("\t%s\n", file->d_name);
             }
          }
       }
     
       printf("Fin repertoire %s\n", directory);
     
       closedir(dir);
     
       return EXIT_SUCCESS;
    }
    int main(int argc, char **argv)
    {
       char directory[256];
     
       fgets(directory, sizeof directory, stdin);
     
       return lister(directory);
    }
    Bonjour (alors j'ai simplement copier et modifier ce code car je cherche à comprendre comment il fonctionne après je créerai mon propre programme de listage avec des détails sur le fichiers...)

    Pour le moment j'ai un problème :

    Compilateur: Default compiler
    Building Makefile: "C:\Users\SamSoft\Documents\Programmation\projets\C\FilesFolders\Makefile.win"
    Exécution de make...
    make.exe -f "C:\Users\SamSoft\Documents\Programmation\projets\C\FilesFolders\Makefile.win" all
    gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"
    main.c: In function `lister':
    main.c:28: error: structure has no member named `d_type'
    main.c:28: error: `DT_DIR' undeclared (first use in this function)
    main.c:28: error: (Each undeclared identifier is reported only once
    main.c:28: error: for each function it appears in.)
    make.exe: *** [main.o] Error 1
    Exécution terminée
    Merci d'avance

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par _SamSoft_ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
             if(file->d_type == DT_DIR)
    Je ne pense pas que POSIX.1 définisse une champ d_type.

    Citation Envoyé par POSIX.1
    The internal format of directories is unspecified.

    The <dirent.h> header shall define the following type:

    DIR
    A type representing a directory stream.

    It shall also define the structure dirent which shall include the following members:

    [XSI][Option Start]
    ino_t d_ino File serial number.
    [Option End]
    char d_name[] Name of entry.
    Pas de d_type. Se méfier des extensions non portables...

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Si je me trompe pas, la version POSIX.1 est ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct  dirent {
                   ino_t           d_ino;
                   off_t           d_off;
                   unsigned short  d_reclen;
                   char            d_name[1];
           };
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Si je me trompe pas, la version POSIX.1 est ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct  dirent {
                   ino_t           d_ino;
                   off_t           d_off;
                   unsigned short  d_reclen;
                   char            d_name[1];
           };
    Tu te trompes. Seul le champ d_name est garanti. Même d_ino est optionnel.

    http://www.unix.org/single_unix_specification/

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/05/2010, 13h56
  2. [Programmation]Faire du COM/OLE sous Linux ou équivalence
    Par randriano dans le forum Applications et environnements graphiques
    Réponses: 13
    Dernier message: 12/06/2008, 08h51
  3. Réponses: 3
    Dernier message: 14/08/2006, 22h08
  4. [EDI] Outil de programmation PHP équivalent à VSS
    Par bourvil dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 23/02/2006, 16h18

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