Posteado por: pasky en: 5 agosto, 2009
La función opendir se usa para abrir un directorio. Su prototipo es:
DIR *opendir(const char *nombre);
El único parámetro que recibe es el nombre del directorio que se quiere abrir. Devuelve un puntero al flujo de directorio (DIR) o NULL en caso de error. Este puntero se colocará en la primera entrada del directorio.
La función readdir sirve para leer las entradas del directorio abierto con opendir. Su prototipo es:
struct dirent *readdir(DIR *dir);
Recibe como parámetro el puntero al flujo de directorio (DIR) que se obtuvo con opendir y devuelve un puntero a una estructura dirent o NULL en caso de error o fin del directorio. Esta estructura dirent representa la siguiente entrada de directorio al que apunte dir.
La función closedir cierra el flujo de directorio que se obtuvo con opendir. Su prototipo es:
int closedir(DIR *dir);
Recibe como parámetro el puntero al flujo de directorio (DIR) y devuelve 0 en caso de éxito y -1 en caso de error.
Y nada mejor que un ejemplo para entenderlo:
#include <sys/types.h>
#include <dirent.h>
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char *argv[]){
/* Variables */
DIR *dirp;
struct dirent *direntp;
/* Comprobamos los argumentos */
if (argc != 2){
printf("Uso: %s directorio\n", argv[0]);
exit(1);
}
/* Abrimos el directorio */
dirp = opendir(argv[1]);
if (dirp == NULL){
printf("Error: No se puede abrir el directorio\n");
exit(2);
}
/* Leemos las entradas del directorio */
printf("i-nodo\toffset\t\tlong\tnombre\n");
while ((direntp = readdir(dirp)) != NULL) {
printf("%d\t%d\t%d\t%s\n", direntp->d_ino, direntp->d_off, direntp->d_reclen, direntp->d_name);
}
/* Cerramos el directorio */
closedir(dirp);
}
Este codigo me marca error en undefine symbol d_ino,d_off,d_reclen esperoooo puedan ayudarme porfavor lo mas rapido posible
trabaja con wordpress??? el opendir… ya que me da error al crear la ruta del directorio
$ruta = “./fotos_galeria/uploads/”;
or
$ruta = bloginfo(‘template_directory’) “/fotos_galeria/uploads/”;
agradeceri de su apoyo
omar galaviz
6 agosto, 2010 a 9:34
este cogigo me da error con el dirent porfavor si podrian ayudarme