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
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;
}
merci d'avance
ps: est ce que c'est possible d'aller plus loin et afficher avec les couleurs exactement la commande ls?