Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Shevy en 14 Enero 2014, 19:55 pm



Título: Manejo de Carpetas en C
Publicado por: Shevy en 14 Enero 2014, 19:55 pm
Hola muy buenas. He estado buscando por la web algún tutorial de manejo de carpetas en C pero no encontré nada. Si alguien conoce de página me sería de gran ayuda.


Título: Re: Manejo de Carpetas en C
Publicado por: x64core en 14 Enero 2014, 20:25 pm
Hola muy buenas. He estado buscando por la web algún tutorial de manejo de carpetas en C pero no encontré nada. Si alguien conoce de página me sería de gran ayuda.
Si es para Windows: http://msdn.microsoft.com/en-us/library/windows/desktop/aa363950(v=vs.85).aspx


Título: Re: Manejo de Carpetas en C
Publicado por: leosansan en 15 Enero 2014, 05:27 am
Hola muy buenas. He estado buscando por la web algún tutorial de manejo de carpetas en C pero no encontré nada. Si alguien conoce de página me sería de gran ayuda.

Una simple opción es usar el system con dir y sus acólitos.

Por ejemplo si quieres ver el contenido de la carpeta C bastaría:


Código
  1. system  ("dir c:\\");
  2.  


Título: Re: Manejo de Carpetas en C
Publicado por: vangodp en 15 Enero 2014, 07:12 am
+1 system.  :-X vaya que no le guste  :silbar:


Título: Re: Manejo de Carpetas en C
Publicado por: amchacon en 15 Enero 2014, 13:57 pm
Doy por hecho que usas C++.

Función que lista directorios en Windows:
Código
  1. void listarDirectorio(std::string Cosa)
  2. {
  3.    // Variables del sistema
  4.  
  5.    WIN32_FIND_DATA findFileData;
  6.    HANDLE          hFind;
  7.  
  8.   // Variable auxiliar
  9.  
  10.    std::string Buffer;
  11.  
  12.    // Iniciamos la busqueda y le pasamos un valor a nuestro Handle
  13.  
  14.    hFind = FindFirstFile(Cosa.c_str(), &findFileData);
  15.  
  16.    // Si no existe la carpeta
  17.  
  18.    if (hFind == INVALID_HANDLE_VALUE)
  19.    {
  20.        std::cout << "La carpeta no existe o no se puede acceder";
  21.    }
  22.  
  23.    else
  24.    {
  25.        // Si existe, pasamos al siguiente fichero (el primero solo contiene basura)
  26.  
  27.        FindNextFile(hFind, &findFileData);
  28.  
  29.        // Listamos todos los ficheros restantes
  30.  
  31.        while (FindNextFile(hFind, &findFileData) != 0)
  32.        {
  33.            Buffer = Cosa; // Creamos una variable de nombre con el valor del directorio
  34.            Buffer.erase(Buffer.size()-1); // Borramos el asterisco
  35.            Buffer += findFileData.cFileName;
  36.  
  37.            if (GetFileAttributes(Buffer.c_str()) == FILE_ATTRIBUTE_DIRECTORY)
  38.            {
  39.                Buffer += "\\*";
  40.                listarDirectorio(Buffer);
  41.            }
  42.            else
  43.            {
  44.                std::cout<<Buffer<<endl;
  45.            }
  46.        }
  47.    }
  48. }

Es importante que le pases a la función la ruta "*" para que te marque la carpeta actual.