Control de usuario
Patrocinadores
Estadísticas
Miembros:
334.623
Online:
1.521
Hilos:
1.380.611
Mensajes:
24.882.117
Stats

Índice de foros Otras Consolas Desarrollo

Nº archivos en un directorio (lenguaje c)

Dedicado al desarrollo de software casero para videoconsolas

Moderador: jiXo

nazareth
Avatar de usuario
I'm Finishing
 
Mensajes: 2466
Registrado: 03 Ene 2008
Ubicación: Cartagena

Nº archivos en un directorio (lenguaje c)

Mensajepor nazareth 01 Jul 2011 15:05

Bueno pues por más que busco e investigo, no consigo hallar como hacerlo.

Lo que busco es poder enumerar todos los archivos de un directorio con cierta extensión, y a su vez, guardar el nombre del archivo en un array.

Por ejemplo, a modo esquema (extensión cualquiera):

data/entra/modo1.eol
data/entra/modo2.eol
data/file1.eol
data/file2.eol

Que indique que hay 4 archivos en el directorio "data" y se guarde su nombre en un array, pero lo importante es que indique el número de archivos.

¿Tenéis alguna idea?

iceman755
Avatar de usuario
Adicto
 
Mensajes: 277
Registrado: 25 Jul 2007

Mensajepor iceman755 01 Jul 2011 16:58

Con las funciones de la cabecera dirent.h lo tienes servido. Echale un vistazo y cualquier cosa que necesites, por aqui andamos :)

nazareth
Avatar de usuario
I'm Finishing
 
Mensajes: 2466
Registrado: 03 Ene 2008
Ubicación: Cartagena

Mensajepor nazareth 01 Jul 2011 17:13

iceman755 escribió:Con las funciones de la cabecera dirent.h lo tienes servido. Echale un vistazo y cualquier cosa que necesites, por aqui andamos :)
Ya lo he ojeado y no tengo ni idea ^^'', a ver si puedes comentarme algo, de todas formas, indagaré más.

iceman755
Avatar de usuario
Adicto
 
Mensajes: 277
Registrado: 25 Jul 2007

Mensajepor iceman755 01 Jul 2011 17:54

ummmm ok XD

incluyes la cabecera
Código: Seleccionar todo
#include <dirent.h>


luego, donde necesites recorrer el directorio, declaras dos variables, de la siguiente manera
Código: Seleccionar todo
DIR *directorio;
struct dirent *fichero;


ahora abres el directorio
Código: Seleccionar todo
directorio = opendir("aqui ruta del directorio que quieres abrir");


verificas si abrio o no
Código: Seleccionar todo
if(directorio == NULL)
{
       //si entra aqui, no abrio, lo manejas a tu antojo

}


recorres el directorio
Código: Seleccionar todo
while(fichero = readdir(directorio))
{
     //aqui haces lo que quieras con el fichero encontrado
     //en fichero->d_name tienes el nombre del fichero
     //cada iteracion de este bloque es por cada entrada en el directorio, sean directorios o ficheros
}


cuando termines, cierras el directorio
Código: Seleccionar todo
closedir(directorio);


Con eso tienes para entretenerte xDDD tienes que verificar la extension de los ficheros de acuerdo al nombre que tienen, asi decides si los usas o los rechazas.

nazareth
Avatar de usuario
I'm Finishing
 
Mensajes: 2466
Registrado: 03 Ene 2008
Ubicación: Cartagena

Mensajepor nazareth 02 Jul 2011 00:03

Gracias.

Esa parte mas menos si la tenía, lo que me falta es ver las extensiones y tal, habrá que probar ^^

Saludos.

iceman755
Avatar de usuario
Adicto
 
Mensajes: 277
Registrado: 25 Jul 2007

Mensajepor iceman755 02 Jul 2011 16:06

En fichero->d_name tienes el nombre completo incluida la extension, solo tienes que crear una funcion que reciba ese nombre y la extension contra la cual quieres comparar; dentro de dicha funcion comparas la extension con los ultimos n caracteres (de acuerto a la extension). Algo mas para entretenerte xDDD si necesitas ayuda para construir dicha funcion, pues por aqui seguimos andando :D

Saludos!!!

nazareth
Avatar de usuario
I'm Finishing
 
Mensajes: 2466
Registrado: 03 Ene 2008
Ubicación: Cartagena

Mensajepor nazareth 02 Jul 2011 16:58

fichero->d_name se considera como un char? o deberia pasarlo a uno?

iceman755
Avatar de usuario
Adicto
 
Mensajes: 277
Registrado: 25 Jul 2007

Mensajepor iceman755 02 Jul 2011 17:57

Es un array de char. lo puedes usar tal cual, o sea, no tienes que pasarlo.

nazareth
Avatar de usuario
I'm Finishing
 
Mensajes: 2466
Registrado: 03 Ene 2008
Ubicación: Cartagena

Mensajepor nazareth 02 Jul 2011 20:47

Para ver si tiene extension he mirado un poco en c.conclase y he hecho una funcion usando strncmp() y strrchr().

Ahora vamos a los directorios :-|

PD: no consigo almacenar el nombre de ninguna manera. Ni usando sprintf ni strncpy ni nada :|, sin embargo, tengo también una variable dentro que me indica el numero de archivos que hay con dicha extensión, y si suma, así que nose :(

iceman755
Avatar de usuario
Adicto
 
Mensajes: 277
Registrado: 25 Jul 2007

Mensajepor iceman755 03 Jul 2011 17:20

Pega el codigo, para echarle un ojo.

Siguiente

Volver a Desarrollo

¿Quién está conectado?

Usuarios navegando por este foro: No hay usuarios registrados visitando el foro y 0 invitados