Introducción
En este laboratorio, crearemos un programa en C para listar todos los archivos presentes en un directorio utilizando el archivo de encabezado dirent.h.
Nota: Debes crear el archivo
~/project/main.ctú mismo para practicar la codificación y aprender cómo compilar y ejecutarlo utilizando gcc.
cd ~/project
## crear main.c
touch main.c
## compilar main.c
gcc main.c -o main
## ejecutar main
./main
Incluir archivos de encabezado
Necesitamos incluir los archivos de encabezado de entrada/salida estándar y dirent escribiendo el siguiente código al principio del programa:
#include <stdio.h>
#include <dirent.h>
Definir la función principal
La función main() es el punto de entrada de nuestro programa. Nuestro programa comienza a ejecutarse desde aquí. También declararemos el puntero de directorio d del tipo DIR y el puntero de entrada de directorio dir del tipo struct dirent.
int main(void)
{
DIR *d;
struct dirent *dir;
/*Su código va aquí*/
return 0;
}
Abrir el directorio
Abriremos el directorio requerido utilizando la función opendir(). Aquí, el operador punto (.) indica el directorio actual.
d = opendir(".");
Leer el directorio
Leeremos cada entrada del directorio utilizando la función readdir(). Aquí, comprobamos que el puntero de directorio no sea nulo. Si no es nulo, imprimiremos todos los archivos presentes en el directorio.
if (d)
{
while ((dir = readdir(d))!= NULL)
{
printf("%s\n", dir->d_name);
}
closedir(d);
}
Código completo
Aquí está el código completo del programa:
#include<stdio.h>
#include<dirent.h>
int main(void)
{
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d)
{
while ((dir = readdir(d))!= NULL)
{
printf("%s\n", dir->d_name);
}
closedir(d);
}
return(0);
}
Resumen
En este laboratorio, hemos aprendido cómo crear un programa en C para listar los nombres de todos los archivos en un directorio. Hemos utilizado funciones del archivo de encabezado dirent.h para lograr esto. Al utilizar este programa, podemos recuperar fácilmente los nombres de todos los archivos presentes en el directorio especificado.



