Ls -l en c

Bonjour,

je souhaite coder ls -l en C et j'ai un souci pour recuperer les infos coresspondant au -l

struct dirent *lecture;
DIR *rep;

struct stat informations;

rep = opendir(".");

while ((lecture = readdir(rep)))
{
printf("%s",lecture->d_name);
printf("%ld\n",informations.st_size);
}

closedir(rep);

sa maffiche :

.0
..0
TP20
TP10
ls.c0
ls0
affiche_name.c0
affiche_name0
myLs.c0
myLs0
myLs-l.c0
myLs-l0

pourquoi sa me met la valeur 0?
Configuration: Windows Vista Internet Explorer 7.0

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Tu l'initialises où ta variable informations ?
    1. sous windows il est plus simple d'utiliser les fonctions FindFirstFile pour lister un dossier.

      les '.' et '..' sont à ignorer en général
      1. Contributeur
        Ouai, mais si on veu faire un truc portable ?
    2. bn j'ai declaré la structure mais l'initialiser avec quoi? comment?
      Et c'est du C sous linux... mais si qq'un sait comment on enleve "." et ".." dite le !!! merci!!
      1. Contributeur
        Je ne sais pas, mais tu appels le membre st_size de information sans modifier "informations" pas étonnant qu'il te donne toujours 0.
        1. bonjour,

          j'ai refais un peu le truc :

          struct dirent *lecture;
          struct stat taille;

          // Declaration des variables
          //
          DIR *rep;
          int filesize

          // Se positionner dans le repertoire courant
          //
          rep = opendir(".");

          // Tant qu'il y a des fichiers, afficher leur nom,les privileges...
          //
          while ((lecture = readdir(rep)))
          {

          stat("",&taille);
          filesize = taille.st_size;

          printf("%s %d \n",lecture->d_name,filesize);

          }

          printf("\n");

          // Fermeture du repertoire
          //
          closedir(rep);

          quand dans stat je specifie un nom de fichier, sa maffiche la bonne taille mais sa l'ecrit egalement sur tous les autres fichiers présents, j'ai essayé en faisant "." et "*.*" pour lui dire d'effectuer le calcul pour chaque fichier mais sa fonctionne pas... si qqun peut maider
          merci
          1. Contributeur
            Ton problème n'est pas clair. Donne un exemple STP.
            1. non c'est bon j'ai trouvé^^ par contre j'ai une autre question, vous voyez quand vous faites ls -l;
              la 1ere ligne il y a ecrit : total [10]

              Que represente ce chiffre? comment fait t'on pr le recuperer?
              merci