Mostrar los archivos y directorios contenidos en un directorio determinado |
|
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(); } |
|