/* * Javier Abellán. 30 de Marzo de 2003 * * Ejemplo de uso de la función scandir */ #include #include /* * Programa principal. Hace lo mismo que un ls */ main() { /* * En entradas la función scandir() nos dejará las entradas del directorio * Se necesita un array de punteros a struct dirent, por eso lo de los * dos asteriscos. * entradas[i] será un puntero a struct dirent */ struct dirent **entradas= NULL; /* * En numeroEntradas guardaremos el número de entradas en el directorio. */ int numeroEntradas; /* * Para recorrer las entradas del directorio y escribirlas en pantalla */ int i; /* * Llamada a la función scandir(). * - Primer parámetro, el directorio que queremos ver. * - Segundo parámetro, un puntero al sitio donde queremos que la función * nos deje las entradas del directorio. * - Tercer parámetro, una función para indicar si queremos o no que una * determinada entrada aparezca en la lista. Si ponemos NULL aparecerán * todas. Si la definimos a nuestra manera, podemos hacer filtros. * - Cuarto parámetro, una función para ordenar las entradas del directorio. * Si ponemos null, saldrá el orden por defecto, si ponemos alphasort (una * función ya definida en c de unix), salen por orden alfabético. También * podemos hacerla a medida (por fechas, directorios primero y ficheros * después, etc). * En numeroEntradas nos indica cuantas entradas ha dejado en el parámetro * entradas. */ numeroEntradas = scandir (".", &entradas, NULL, NULL); /* * Bucle para leer las entradas y escribirlas en pantalla. */ for (i=0; id_name); /* Liberamos la memoria que reservó scandir(), puesto que no la volvemos * a utilzar */ free (entradas[i]); entradas[i] = NULL; } /* * Liberamos la tabla entradas completa, ya que no la volvemos a utilizar. */ free (entradas); entradas = NULL; }