Autor
|
Tema: Listar directorio en c (Leído 13,418 veces)
|
DrKillador
Desconectado
Mensajes: 56
|
Hola amigos, Saben como puedo hacer para listar un dir en C? y devolver una list con los archivos y subcarpetas que contenga el directorio? Graxx
|
|
|
En línea
|
Python <3 Python
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
Ejemplo usando POSIX: #include <dirent.h> #include <stdio.h> int main() { DIR *d = opendir("."); struct dirent *dentry; size_t i=1; while((dentry=readdir(d)!=NULL)) { printf("%u. %s\n", i , dentry ->d_name ); } return 0; }
No lo he probado, pero creo que funcionara. Este ejemplo debe listar los archivos y directorios del directorio actual ("."). Si es para windows no te puedo ayudar. Saludos.
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
DrKillador
Desconectado
Mensajes: 56
|
Gracias! Se me olvido ponerlo, sorry bro, es para windows
|
|
|
En línea
|
Python <3 Python
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
void listarDirectorio(string Cosa) { // Variables del sistema WIN32_FIND_DATA findFileData; HANDLE hFind; // Iniciamos la busqueda y le pasamos un valor a nuestro Handle hFind = FindFirstFile(Cosa.c_str(), &findFileData); // Si no existe la carpeta if (hFind == INVALID_HANDLE_VALUE) { std::cout << "La carpeta no existe o no se puede acceder"; } else { // Si existe, pasamos al siguiente fichero (el primero solo contiene basura) FindNextFile(hFind, &findFileData); // Listamos todos los ficheros restantes while (FindNextFile(hFind, &findFileData) != 0) { Buffer = Cosa; // Creamos una variable de nombre con el valor del directorio Buffer.erase(Buffer.size()-1); // Borramos el asterisco Buffer += findFileData.cFileName; if (GetFileAttributes(Buffer.c_str()) == FILE_ATTRIBUTE_DIRECTORY) { Buffer += "\\*"; listarDirectorio(Buffer); } else { std::cout<<Buffer<<endl; } } } }
Es importante que le pases a la función la ruta "*" para que te marque la carpeta actual.
|
|
« Última modificación: 24 Febrero 2013, 22:37 pm por amchacon »
|
En línea
|
|
|
|
DrKillador
Desconectado
Mensajes: 56
|
Gracias @amchacon, una pregunta del código, en el IF situado dentro del WHILE, si la sentencia es verdadera intenta hacer recursividad, llamando de nuevo a la función listarDirectorio, pero a esta función se le pasan 2 argumentos, cuando en realidad solo admite uno por cabecera: listarDirectorio(Buffer,Nuevo); void listarDirectorio(string Cosa) ¿Está bien así?
|
|
|
En línea
|
Python <3 Python
|
|
|
DrKillador
Desconectado
Mensajes: 56
|
A ver si me pueden ayudar, he programado el siguiente codigo para listar todos los archivos y subcarpetas de una carpeta, pero me muestra UN SOLO archivo de la carpeta, el primero concretamente. Saben que me puede estar fallando? Gracias a to2 #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <tchar.h> int main() { WIN32_FIND_DATA findFileData; HANDLE hFind; hFind = FindFirstFile(".", &findFileData); if(hFind==INVALID_HANDLE_VALUE) { printf("La carpeta no existe o no se puede acceder"); } else { do { if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { printf("Dir %s",findFileData. cFileName); } else { printf("%s\n",findFileData. cFileName); } }while(FindNextFile(hFind,&findFileData)!=0); FindClose(hFind); } return 0; }
|
|
« Última modificación: 7 Febrero 2013, 14:26 pm por DrKillador »
|
En línea
|
Python <3 Python
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Culpa mia, he cometido dos fallos:
- Lo de poner la funcion recursiva con dos parametros. - Es un * para listar el directorio actual y no un punto.
|
|
|
En línea
|
|
|
|
DrKillador
Desconectado
Mensajes: 56
|
Arreglado, era el * efectivamente. Ya podéis cerrar el hilo, muchas gracias!
|
|
|
En línea
|
Python <3 Python
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Aclaro un poco lo de *
Hay que poner * para acceder al contenido de una carpeta, de lo contrario lo unico que accederemos es a la carpeta en sí (podríamos checkear sus propiedades, sus características... etc).
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Code: Listar los archivos de un directorio (subdirectorios incluidos)
Programación Visual Basic
|
EstoyBaneado
|
0
|
2,725
|
25 Agosto 2005, 01:31 am
por EstoyBaneado
|
|
|
Listar un directorio ftp
Programación Visual Basic
|
programatrix
|
8
|
4,028
|
30 Diciembre 2005, 13:32 pm
por programatrix
|
|
|
Listar usuarios de un directorio en windows xp
Windows
|
luur01
|
1
|
4,394
|
22 Julio 2011, 18:36 pm
por Randomize
|
|
|
ls se bloquea al listar un directorio
GNU/Linux
|
{_The_Alwar_}
|
2
|
2,995
|
29 Mayo 2012, 20:10 pm
por {_The_Alwar_}
|
|
|
Problema al listar directorio con File.list()
Java
|
AlterMundis
|
5
|
2,993
|
29 Enero 2013, 21:32 pm
por AlterMundis
|
|