Programa para listar archivos en un directorio

CBeginner
Practicar Ahora

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.c tú 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.