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 :

fonction ls -l


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Août 2011
    Messages : 103
    Par défaut fonction ls -l
    Bonjour, je suis en train de reprogrammer la fonction ls en C avec les diverses options mais après avoir afficher les droits je dois afficher la date de modification mais je coince un peu

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    #include <stdio.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <dirent.h>
    #include <unistd.h>
     
    int main(int argc, char *argv[]){
    struct stat info;
    struct dirent *entree;
    DIR *repertoire;
    repertoire = opendir(".");
    int optch;
    extern int opterr;
    char format[] = "ail";
    char droits[8][4] = {"---","--x","-w-","-wx","r--","r-x","rw-","rwx"};
     int droits_prop, droits_grp, droits_autres;
    opterr = 1;
    while ((optch = getopt(argc, argv, format)) != -1)
    switch (optch) {
     
     case 'a':
       /* gere ls -a*/ 
       while (entree=readdir(repertoire)) {
            printf("%s\n",entree->d_name);
         } 
     
       /*gere ls -ai*/ 
       while ((optch = getopt(argc, argv, format)) != -1)
        switch (optch) {
          case 'i':
          while (entree=readdir(repertoire)) {
            printf("%d : %s\n", entree->d_ino, entree->d_name);
          }
          break;
        }
     
       /* gere ls -i*/
      case 'i':
        while (entree = readdir(repertoire)) {   
          if(entree->d_name[0] != '.')  
          printf("%d : %s\n", entree->d_ino, entree->d_name);
        }
        break;
     
       /* gere ls -l*/
      case 'l':
        while (entree=readdir(repertoire)) {
          lstat(entree->d_name,&info);
          droits_prop = (info.st_mode >> 6) &7;
          droits_grp = (info.st_mode >> 3) &7;
          droits_autres = info.st_mode &7;
          /* affichage droit et non du fichier */
          printf("%s%s%s\t %s\n",droits[droits_prop],droits[droits_grp],droits[droits_autres],entree->d_name);
           }
        break;
     
        /* option non connu */
      default:
        printf("Saisir une option : -l, -a, -ai, -ls \n");
        break;   
    }
    return 0;
    }

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    juste une remarque :

    pour chaque option tu passes à travers les fichiers...

    tu as switch() puis while... dans les case.

    L'inverse serait plus efficace :

    while() puis switch..

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Août 2011
    Messages : 103
    Par défaut programmation fonction ls
    Oui exact merci de me l'avoir fait remarqué c'est plus logique de mettre en While en premier car celle-ci est répété dans chaque case.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction API
    Par margilb dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2002, 11h11
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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