Listeur de fichiers

Contenu du snippet

Il fait la même chose que la commande ls de Linux sauf qu'on peut soit lister les fichiers d'un repertoire, soit enregistrer les fichiers du repertoire dans un fichier texte, soit les deux.

Source / Exemple :

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
                                                                                                                            
#define FALSE 0
#define TRUE 1
                                                                                                                            
int main(int argc, char **argv)
{
                                                                                                                            
    struct dirent *read;
    DIR *rep;
    FILE* handle ;
    int i=0,j ;
    int list,save,help ;
    char filename[100] ;
    char dirname[100] ;
                                                                                                                            
                                                                                                                            
                                                                                                                            
    list=FALSE ;
    save=FALSE ;
    help=FALSE ;
                                                                                                                            
                                                                                                                            
    if(argc<2)
       { puts("Too few arguments. -h for help");
         return -1 ;
        }
                                                                                                                            
                                                                                                                            
    for(j=1 ; j<argc ; j++)
     { if(!strcmp(argv[j],"-h")) help=TRUE ;
       if(!strcmp(argv[j],"-l")) list=TRUE ;
       if(!strcmp(argv[j],"-s")) save=TRUE ;
     } 
 if(help)
           {
         puts("Help -- listing files 1.0\n") ;
         puts(" Valid arguments are :");
         puts("-l : list files contained in the directory");
         puts("-s : save files name in another file") ;
         return -1;
           }
                                                                                                                            
    if(save || list )
     {
    /* enter the directory */
    puts("Enter the path of the directory");
    fgets(dirname,100,stdin) ;
    dirname[strlen(dirname)-1]='\0' ;
     }
    /* ... */
                                                                                                                            
    /* open the file where datas will be saved in if save=TRUE*/
      if(save)
       {
          puts("Enter the path of the file where datas will be saved in");
          fgets(filename,100, stdin) ;
          filename[strlen(filename)-1]='\0' ; // delete \n
    if(!(handle=fopen(filename, "a")) )
     { fprintf(stderr, "\nFile can't be opened. Check the path\n");
      return -1 ;
     }
       }
                                                                                                                            
    /* list files if list=TRUE*/
                                                                                                                            
    rep = opendir(dirname);
    while ((read = readdir(rep)))
     {
          ++i ; // number of files in directory
if(list)
         printf("%d: %s\n", i-2,read->d_name); // do not count '.' and '..'
                                                                                                                            
          /* save files name in a file */
                                                                                                                            
     if(save)
         { fprintf(handle,"%d - %s\n" ,i-2, read->d_name) ;
          }
                                                                                                                            
                                                                                                                            
     }
      closedir(rep);
      if(save) fclose(handle) ;
                                                                                                                            
                                                                                                                            
                                                                                                                            
                                                                                                                            
                                                                                                                            
                                                                                                                            
    return 0 ;
                                                                                                                            
                                                                                                                            
}

Conclusion :

C'est mon premier soft en C sous Linux.
Je ne savais pas quoi faire un jeudi après-midi (il pleuvait) alors j'ai fait ca en quelques minutes. Ca m'a permis de savoir comment lister les fichiers d'un repertoire. Il est clair qu'il ne sert à rien car un ls > fichier aurait suffit a rediriger le résultat de ls vers un fichier mais bon, c'était histoire de taper du code :p
Utilisation : les arguments sont : -s pour sauver dans un fichier et -l pour lister et -s -l ou -l -s pour lister et sauver !
MARCHE UNIQUEMENT SOUS LINUX

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.