Besoin d'aide pour lister contenu d'un dossier - C - Programmation
Marsh Posté le 15-03-2006 à 20:55:17
tu devrait utiliser un if à la place du switch.
Dans ce cas, on teste d abord les arguments avant de les traiter:
tu boucle sur les arguments tant qu il s agit d une option -l ou -R,
si tu tombe sur une autre option tu affiche un message d aide et tu quitte,
les arguments qui suivent sont les répertoires à traiter à l aide d une fonction, genre:
void lister(char* dir, int format_long, int recursif);
Tu appelle cette fonction pour tous les fichiers/répertoires en argument.
La fonction lister(), s apelle elle même si recursif.
Marsh Posté le 15-03-2006 à 21:13:55
il y a la bibliotheque argtable pour parser une ligne de commande dans ce style
http://argtable.sourceforge.net/
Marsh Posté le 15-03-2006 à 12:56:05
Bonjour,
J'ai besoin d'aide de connaisseurs en C , SVP ...
Je souhaite créer une fonction en C qui s'exécutera sous Linux.
Un peu comme ls, je veux lister les fichiers et répertoires d'un chemin indiqué ou du dossier courant si on ne précise pas de chemin.
Ce code arrive a lister uniquement les fichiers contenu :
***************************************************************
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
int main (int argc, char *argv[])
{
DIR *dirp;
struct dirent *entry;
switch (argc) {
case 2 :
dirp = opendir (argv[1]);
if (dirp == NULL) {
fprintf(stderr,"ne sait pas ouvrir %s \n",argv[1]);
return 0;
}
for(entry=readdir(dirp);entry!=NULL;entry = readdir(dirp)) {
if (entry->d_name[0] != '.')
printf ("%s\n",entry->d_name);
}
closedir(dirp);
break;
default :
fprintf(stderr,"Usage : myls dir_name \n" );
break;
}
return 0;
}
*****************************************************************
Moi, je souhaite avoir 2 options possibles :
-l (qui liste contenu fichiers + dossiers simplement Niveau 1 en formatant les colones)
exemple : -rwxr-xr-x 1 astek operator 497 Oct 13 14:00 stream.a*
-R (Pour lister récursivement le dossier, soit son contenu + le contenu de ses dossiers)
Ces options doivent pouvoir être passées dans un sens quelconque et se cumuller.
Sans l'option -l , on ne gère pas le formatage en colones.
Il doit être capable de faire un "ls -l /dev /usr/sbin".
Je vous avoue être un peu perdu, donc toute aide concrète me sera la bienvenue !!!
Par avance UN ENORME MERCI !!