begin process at 2012 02 10 07:25:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications Linux

 > LISTEUR DE FICHIERS

LISTEUR DE FICHIERS


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Applications Linux Niveau :Débutant Date de création :23/02/2004 Vu :8 710

Auteur : NW4O

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

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

  • #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 ;
  • }
#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


 Sources du même auteur

GUESSNUMBER : DEVINER LE NOMBRE RECHERCHÉ

 Sources de la même categorie

Source avec une capture COLORIMÈTRE NUMÉRIQUE LINUX par valchek
Source avec Zip TRAITEMENTS D'IMAGES AU FORMAT PGM AVEC LES ALGORITHMES DE C... par lemout
Source avec Zip ALGORITHME ACO INTERFACE GTK par RyBeN
Source avec Zip COMPRESSER SES SAUVEGARDES SMSBACKUPRESTORE (ANDROID) EN C A... par ThalLab
SIMPLE SCANNER DE PORTS par Vb6Malade

Commentaires et avis

Commentaire de ipfixe le 30/12/2004 20:07:16

ls >> text.txt pareil non ?

Commentaire de Oeil_de_taupe le 27/08/2006 14:11:44


Merci, ton code m'a beaucoup aidé. Mais j'ai juste une remarque mineure.

Penses-tu vraiment que cette ligne soit importante: "dirname[strlen(dirname)-1]='\0';". Ce que fait strlen c'est simplement de rechercher la position de '\0'.
Donc si y a un car. '\0' à la fin du string cette ligne sert à rien et si n'y en a pas, le programme plante. Peut-être voulais-tu plutôt utiliser ceci: strnlen(...).

Commentaire de informatique02 le 28/05/2008 00:28:24

il est suuuuper mais pr qu'il soit complé il faut lui mettr un foction qui tri ces fichier par nom ou par type ou bienpar taille
et je te félécite

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales