aide pour coder la fct ls
salut a tous,
je refait surface, avec bcp de notions vues, je suis en ce moment sur la codage de la fonction my_ls
je gere l'option -l et suis en train de faire l'option -R
seul probleme comme vous devez le savoir le -R affiche tout les fichiers du repertoire donne et ouvre aussi tout les repertoires present dans le repertoire donnee,
j'ai coder cette option en faisant un appel recursif a chaque fois qu'il tombe sur un repertoire, seul hic, ca ne fonctionne pas..................
voici le code de l'option -R;
Code:
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
|
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
int option_r(char *name)
{
struct dirent *d;
struct stat info_file;
DIR *dir;
if ((dir = opendir(name)) == (NULL))
return(0);
while ((d = readdir(dir)) != (NULL))
{
if (strcmp(d->d_name, ".") == 0 || strcmp(d->d_name, "..") == 0)
continue;
else
{
if (stat(d->d_name, &info_file) == - 1)
return(0);
if (S_ISDIR(info_file.st_mode))
option_r(d->d_name);
printf("%s\n", d->d_name);
}
}
closedir(dir);
}
int main()
{
option_r(".");
} |
le resulat est qu'il m'affiche les noms de fichiers du repertoire courant uniquement.....alors qu'il existe un repertoire dans ce repertoire courant et qu'il est cense l'ouvrir............?
aide pour coder la fct ls
bonjour,
je rencontre un probleme d'ouverture de repertoire, je code la fonction ls basique qui liste les fichiers d'un repertoire donne en parametre, sauf que ma fonction ne fonctionne que qvec el repertoire courant...........
Code:
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
|
#include "my.h"
#include <grp.h>
#include <pwd.h>
int parcour_rep(char *rep)
{
struct dirent *d;
struct stat info_file;
DIR *dir;
if ((dir = opendir(rep)) == (NULL))
{
printf("impossible d'ouvrir %s\n", rep);
return(0);
}
while ((d = readdir(dir)) != (NULL))
{
if (strcmp(d->d_name, ".") == 0 || strcmp(d->d_name, "..") == 0)
continue;
else
{
if (stat(d->d_name, &info_file) == - 1)
return(0);
if (S_ISDIR(info_file.st_mode))
printf("d :");
else
printf("- :");
printf("%s\n", d->d_name);
}
}
closedir(dir);
}
int main(int ac, char **av)
{
DIR *dir;
char *name;
if (ac > 1)
{
if (av[1][0] == '-' && av[1][1] == 'l')
{
parcour_rep(av[2]);
return(0);
}
return(0);
}
return (0);
} |