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
readdirdevuelve NULL cuando se acaban las entradas.- Las entradas punto y punto-punto también aparecen.
- El struct devuelto se reutiliza, así que copia lo que conserves.
Palabras clave y builtins usados aquí
DIRNULLcharconstcontinueifintreturnstructwhile
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.
Paso 2 de 2 en Archivos y directorios; paso 12 de 14 en Programación de sistemas.