<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>
Wenas , estoy intentando la implementacion de la impresion de Directorios/ficheros de la siguiente manera :<br><br>
Directorio<br>
[tab]Fichero<br>
[tab]Fichero<br>
Directorio<br>
[tab]Subdirectorio<br>
[tab][tab]Fichero<br>
..<br><br>De momento el codigo q llevo realizado es este :<br><br>#include<stdio.h><br>#include<dirent.h><br>#include<string.h><br>#include<sys/stat.h><br>#include<sys/types.h><br>#include <stdlib.h><br><br>//Prototipos<br>void busqueda(char [],char [],int);<br><br>int main(int argc, char *argv[]){<br><br> char user [PATH_MAX];<br> char ruta [PATH_MAX];<br> int tab=0; <br><br> strcpy(user,argv[1]); // Pillamos el nombre del usuario // NO IMPORTA SI HAY ERROR AL NO AŅADIR EL NOMBRE DEL USUARIO // SOLO ES PRUEBA <br> getcwd(ruta,PATH_MAX); // Pillamos el directorio actual.<br><br> busqueda(user,ruta,tab);//Llamamos la funcion recursiva de busqueda de Directorios/archivos.<br> <br>}<br>void busqueda(char user[],char ruta[],int tab){<br><br> DIR *directorio;<br> struct dirent *fichero;<br> struct stat fich; <br> char ficheros [PATH_MAX];<br> <br> int i; <br><br> directorio = opendir(ruta);<br> if(directorio==NULL){<br> printf("Error al abrir el directorio\n");<br> exit(-1);<br> }<br> while ( (fichero=readdir(directorio)) != NULL ){<br> if ( strcmp(fichero->d_name, "..") != 0 && strcmp(fichero->d_name, ".") != 0 ){<br> strcpy (ficheros, ruta);<br> strcat (ficheros, "/");<br> strcat (ficheros, fichero->d_name);<br> if ( (lstat(ficheros, &fich)) == -1 ){ //obtenemos la informacion del archivo
<br> fprintf( stderr, "\nNo se pudo obtener la informacion del fichero:\n" );<br> fprintf( stderr, "\t%s\n\n", ficheros);<br> } <br> //-tree? xD<br> if(S_ISDIR(fich.st_mode)){ //Encontramos un directorio, y aumentamos tab+1 para tabular los archivos q contiene<br> for(i=0;i<tab;i++) <br> printf("\t"); <br> printf("%s \n",fichero->d_name);<br> tab=tab+1; <br> }<br> else{ <br> for(i=0;i<tab;i++)<br> printf("\t"); <br> printf("%s \n",fichero->d_name);<br> } <br> //recursiva<br> if(S_ISDIR(fich.st_mode)) <br> busqueda(user,ficheros,tab); <br> }<br> }<br> closedir(directorio); <br>}<br><br>Por supuesto , el problema solo radica en la impresion "-tree" . Ahora
mismo lo unico que hce es tabular , cuando ve que es un directorio,
pero no se volver al principio de linea para el siguiente. Alguien me
puede echar una manita? <br>
<br>
Gracias.<br><br /><hr />Express yourself instantly with MSN Messenger! <a href='http://clk.atdmt.com/AVE/go/onm00200471ave/direct/01/' target='_new'>MSN Messenger</a></body>
</html>