typestar

Recorrer un directorio en C

opendir, readdir, closedir: tres llamadas y un bucle.

#include <dirent.h>
#include <stdio.h>
#include <string.h>

int count_entries(const char *path) {
    DIR *dir = opendir(path);
    if (dir == NULL) {
        perror("opendir");
        return -1;
    }

    int count = 0;
    struct dirent *entry;
    while ((entry = readdir(dir)) != NULL) {
        if (strcmp(entry->d_name, ".") == 0 ||
            strcmp(entry->d_name, "..") == 0) {
            continue;
        }
        printf("%s\n", entry->d_name);
        count++;
    }
    closedir(dir);
    return count;
}

Cómo funciona

  1. readdir devuelve NULL cuando se acaban las entradas.
  2. Las entradas punto y punto-punto también aparecen.
  3. El struct devuelto se reutiliza, así que copia lo que conserves.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
24
Caracteres a escribir
413
Tokens
135
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 77 segundos.

Escribe este fragmento

Paso 2 de 2 en Archivos y directorios; paso 12 de 14 en Programación de sistemas.

← Anterior Siguiente →