Mostrar los archivos y directorios contenidos en un directorio determinado Imprimir
Escrito por adrianvaca   
Martes, 22 de Marzo de 2011 23:56

Esta es una pequeña simulación del comando dir del DOS, el cual simplemente muestra el listado de archivos y directorios que se encuentran en un directorio en particular.

Bien, los archivos de cabecera que necesitamos son los siguientes:

#include <stdio.h>
#include <dir.h>
#include <dos.h>
#include <string.h>



Ahora vamos a definir 2 constantes las cuales nos permiten determinar si queremos listar todos los archivos y directorios o sólo los que están visibles:

/* Constantes para saber que queremos listar */
#define FA_TODOS FA_RDONLY|FA_HIDDEN|FA_SYSTEM|FA_LABEL|FA_DIREC|FA_ARCH
#define FA_VISIBLES FA_RDONLY|FA_SYSTEM|FA_LABEL|FA_DIREC|FA_ARCH



Ahora si vamos a definir nuestra función que haga el trabajo:

char asteriscos[ 5 ] = {'\\','*','.','*','\0'};

void comando_dir(char directorio[ 255 ])
{
   struct ffblk ffblk;

   long archivos = 0;
   long directorios = 0;
   int done;

   strcat(directorio, asteriscos);

   /* Busca el primero que haya, devuelve 0 si lo encuentra */
   done = findfirst(directorio,&ffblk,FA_VISIBLES);

   /* Si encuentra uno o varios */
   while(!done)
   {   
           /* Si es un directorio */
          if (ffblk.ff_attrib&FA_DIREC)
          {
              if (strcmp(ffblk.ff_name,".") != 0 && strcmp(ffblk.ff_name,"..") != 0)
              {
                   printf("Nombre -> %s - Tamanio -> %ld - Tipo -> Directorio\n", ffblk.ff_name, ffblk.ff_fsize);
                   directorios++;
              }
           }
           else
           {
                    printf("Nombre -> %s - Tamanio -> %ld - Tipo -> Archivo\n", ffblk.ff_name, ffblk.ff_fsize);
                    archivos++;
           }

            done = findnext(&ffblk);
   }

   printf("\nTotal de directorios: %ld\n", directorios);
   printf("Total de archivos: %ld\n", archivos);
}



Si analizan el código verán que no es tan complicado. Ahora la función main, para probar:

void main()
{
   char directorio[ 255 ];

   printf("Ingrese directorio: ");
   fflush(stdin);
   gets(directorio);

   printf("Ejecucion de dir...\n\n");
   comando_dir(directorio);

   getchar();
}





 
Otros artículos