10/10/2007, 16:41
|
| | Fecha de Ingreso: marzo-2007
Mensajes: 9
Antigüedad: 17 años, 10 meses Puntos: 0 | |
Re: Impresion de Directorios/Ficheros -tree Okey de momento llevo esto :
Código:
#include<stdio.h>
#include<dirent.h>
#include<string.h>
#include<sys/stat.h>
#include<sys/types.h>
#include <stdlib.h>
//Prototipos
void busqueda(char [],char [],int);
int main(int argc, char *argv[]){
char user [PATH_MAX];
char ruta [PATH_MAX];
int tab=0;
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
getcwd(ruta,PATH_MAX); // Pillamos el directorio actual.
busqueda(user,ruta,tab);//Llamamos la funcion recursiva de busqueda de Directorios/archivos.
}
void busqueda(char user[],char ruta[],int tab){
DIR *directorio;
struct dirent *fichero;
struct stat fich;
char ficheros [PATH_MAX];
int i;
directorio = opendir(ruta);
if(directorio==NULL){
printf("Error al abrir el directorio\n");
exit(-1);
}
while ( (fichero=readdir(directorio)) != NULL ){
if ( strcmp(fichero->d_name, "..") != 0 && strcmp(fichero->d_name, ".") != 0 ){
strcpy (ficheros, ruta);
strcat (ficheros, "/");
strcat (ficheros, fichero->d_name);
if ( (lstat(ficheros, &fich)) == -1 ){ //obtenemos la informacion del archivo
fprintf( stderr, "\nNo se pudo obtener la informacion del fichero:\n" );
fprintf( stderr, "\t%s\n\n", ficheros);
}
//-tree? xD
if(S_ISDIR(fich.st_mode)){ //Encontramos un directorio, y aumentamos tab+1 para tabular los archivos q contiene
for(i=0;i<tab;i++)
printf("\t");
printf("%s \n",fichero->d_name);
tab=tab+1;
}
else{
for(i=0;i<tab;i++)
printf("\t");
printf("%s \n",fichero->d_name);
}
//recursiva
if(S_ISDIR(fich.st_mode))
busqueda(user,ficheros,tab);
}
}
closedir(directorio);
}
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?
Gracias. |