bonjour,
je cherche a immiter le fonctionnement de la commande shell ls ,lors de l'éxécution du programme sans argument il affiche pour le répertoire courant :
si j'ai comme option -r j'affiche les répertoires
-f les fichiers
si j'ai rien j'affiche tous.
si j'ai des argument je fait le même fonctionnement pour le répertoire entrée en argument voici le code source
merci d'avance
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
65
66
67 #include <stdio.h> #include <sys/types.h> #include <dirent.h> #include <unistd.h> int main(int argc,char *argv[]){ DIR *var; int opt; struct dirent *recup; if (argc==1){ printf("pas d'argument\n"); var=opendir("."); if(var==NULL) perror("opendir"); else{ recup=readdir(var); if(opt = getopt(argc, argv, "rf:")!= -1){ switch (opt) { case 'r':while(recup!=NULL) {if(recup->d_type==DT_DIR); printf(" %s\n",recup->d_name); recup=readdir(var); } break; case 'f':while(recup!=NULL) {if(recup->d_type==DT_REG); printf(" %s\n",recup->d_name); recup=readdir(var);} break; default: /*ne rien faire*/ } } else /*pas doption*/ while(recup!=NULL) {printf(" %s\n",recup->d_name); recup=readdir(var); } closedir(var);} } else{ var=opendir(argv[1]); if(var==NULL) perror("opendir"); else{ if(opt = getopt(argc, argv, "rf:")!= -1){ switch (opt) { case 'r':while(recup!=NULL) {if(recup->d_type==DT_DIR); printf(" %s\n",recup->d_name); recup=readdir(var); } break; case 'f':while(recup!=NULL) {if(recup->d_type==DT_REG); printf(" %s\n",recup->d_name); recup=readdir(var);} break; default: /*ne rien faire*/ } } else /*pas doption*/ while(recup!=NULL) {printf(" %s\n",recup->d_name); recup=readdir(var); } closedir(var);} } return 1; }
ps: est ce que c'est possible d'aller plus loin et afficher avec les couleurs exactement la commande ls?
Partager