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 :

Trier ordre alpha Myls


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    étudiant @ Epitech
    Inscrit en
    Novembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : étudiant @ Epitech
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 16
    Par défaut Trier ordre alpha Myls
    Bonjour !

    Je me permets de poster dans cette section pour essayer d'obtenir un peu d'aide. Voilà le problème, je dois recoder la fonction ls du système unix, j'ai en partie réussi, mais il me reste une étape qui me pose problème, comment puis-je trier les fichier renvoyer par ma fonction, par ordre alphabétique.

    J'ai vu des postes similaires mais je n'ai pas bien compris comment les appliquer à mon cas.. vous allez comprendre

    Voici le code à l'heure actuel, là ce n'est que pour la partie ls sans option (-l -r etc) :
    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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <unistd.h>
    #include <dirent.h>
    #include <pwd.h>
    #include <grp.h>
    #include <time.h>
    #include <assert.h>
     
    int     the_ls(char *str)
    {
      struct stat   buf;
      int           b;
      int           a;
     
      a = 0;
      b = stat(str, &buf);
      if (b == -1)
        my_putstr("error");
      else if (S_ISREG(buf.st_mode))
        {
          while (str < str + 1)
            {
              my_strcmp(str, str + 1);
              str++;
            }
          my_putstr(str);
          my_putchar(' ');
        }
    }
     
    int     my_ls()
    {
      struct dirent *files;
      DIR           *dir;
      int           i;
     
      dir = opendir(".");
      if (dir == NULL)
        return (0);
      while (files = readdir(dir))
        {
          the_ls(files->d_name);
          i++;
        }
      closedir(dir);
      return (1);
    }
    comme vous pouvez le voir dans la fonction "the_ls" j'ai essayé de manipuler my_strcmp, mais je n'arrive pas à voir la façon dont on est sensé s'en servir... J'ai donc laissé ma dernière manipulation du désespoir

    Voilà, si vous pouviez m'aider, je vous en serais très reconnaissant !

    Merci d'avance.

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    strcmp(a,b) renvoie 0 quand !a<b && !b<a, une valeur positive si a<b et une valeur négative si b<a.
    avec "<" signifiant "triée avant dans l'ordre alphabétique".

    C'est une fonction de comparaison, pas de tri explicite.

    tu dois donc coder une fonction de tri (probablement le tri à bulle)

  3. #3
    Membre averti
    Homme Profil pro
    étudiant @ Epitech
    Inscrit en
    Novembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : étudiant @ Epitech
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 16
    Par défaut
    Oui tu as raison, mais je suis en train de me dire qu'il serait sympa que je recueille d'abord les fichiers qui vont être ouvert, mais je ne comprend pas bien ce qu'il se passe avec opendir, du coup je ne sais pas bien comment récupérer les fichiers et, par exemple, les mettre dans une structure, pour ensuite les classer...

    Quelqu'un pourrait m'expliquer ?

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Décris ton algorithme sur papier, de manière détaillée. Quand chaque phrase correspondra dans ta tête à un nom de fonction, tu auras assez précisé, et ton code sera quasiment fait.

    Perso, je ne me souviens plus des détails de opendir, j'aurai du mal a t'aider plus.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Déjà, si tu veux pouvoir trier les résultats selon quelque critère que ce soit, tu vas devoir les mémoriser tous.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    J'aime bien aider, mais pour ce type de question de la part d'un étudiant d'epitech, venant de la même école je te répondrais ce que tes profs ton dit (je ne dénigre pas les autres écoles loin de la juste une habitude interne :/).

    Étudie le man comprend bien les fonctions que tu utilise regarde ce qui rentre et sort des fonctions et regarde dans les fichier les headers du système la tronche des structures.

    Je sais l'école est super chiante avec ça mais dans le temps tu verra que t'habituer à ce type d'approche ça aide beaucoup plus que demander sur un forum.

    Et va voir tes collègues il pourrons peu être t'apporter de l'aide

Discussions similaires

  1. [XL-2013] Trier onglet Excel Par couleur puis par ordre alpha
    Par angelina0576 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2014, 09h14
  2. Lister dans ordre alpha
    Par richard038 dans le forum Requêtes
    Réponses: 10
    Dernier message: 25/07/2006, 17h47
  3. Tri ordre alpha dans une table.
    Par Aurèl90 dans le forum Access
    Réponses: 2
    Dernier message: 19/12/2005, 12h29
  4. Tri par ordre alpha, sensibilité à la casse
    Par linou dans le forum Oracle
    Réponses: 2
    Dernier message: 30/09/2005, 14h45

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