Foros de daboweb

MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: Rubi22 en 05 de Octubre de 2004, 03:22:11 pm

Título: Funcion tree en C
Publicado por: Rubi22 en 05 de Octubre de 2004, 03:22:11 pm
Hola buenas tardes:

Me han planteado un problema en C, hace tiempo que no programo en este lenguaje asi que he perdido algo de soltura. Mi programa debe simular la funcion tree de msdos. La unica pista que nos han dado es que deberemos utilizar la libreria dir.h.
Supuestamente entonces habra que mostrar el contenido del disco duro por pantalla, supongo que habra que utilizar las funciones argc y argv aunque no recuerdo muy bien como se utilizaban.
La cuestion es que si teneis alguna idea de como enfocar el programa os lo agradeceria. Un saludo a todos¡¡
Título: Funcion tree en C
Publicado por: destroyer en 05 de Octubre de 2004, 05:59:06 pm
hola:

Bienvenida al foro rubi22.. . A ver si los compañeros más "puestos" en este tema,  te pueden dar una solución..

Un saludo

¿Ampliaste  disco duro a tu pc?.-  :wink:
Título: Funcion tree en C
Publicado por: ALP en 05 de Octubre de 2004, 08:38:20 pm
Hola.

Debes hacer una función recursiva, ya que es la forma más simple de recorrer el árbol de directorios. Utiliza las funciones findfirst() y findnext(). Si el archivo que encuentra es un directorio, vuelves a llamar a la función pasándole el nombre del directorio al que vas a entrar. Por ejemplo:

Código: [Seleccionar]
tree(char *ruta)
{
     static int nivel = 1;

     if ( chdir(ruta) )
          return;

     if (  findfirst(...)  )
          return;

     nivel++;
     do {

          imprime_nombre_fichero

          si es directorio y no es "." ni ".."
               tree(nombre);

     } while(  !findnext(...) );
     nivel--;

     if (nivel > 1)
          chdir("..");
}


De esta forma, vas entrando en los directorios y mostrando su contenido. Con la variable nivel, sabes en qué subnivel te encuentras, y si tienes que volver al directorio anterior.

Es sólo una idea, pero puede ser un comienzo.

Un saludo.