Cachorro
2006-03-07 16:10:36 UTC
Hola buenas a todos.
Escribí este programa que lista recursivamente ficheros y directorios, o al
menos eso es lo que se intenta, alguna ayudita de donde puede estar el
fallo :).
Muchas gracias y un saludo Cachorro
#include <errno.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
const int MAXPATHLEN=1024;
///#include <pme.h> expresiones regulares
void rDir(char *ruta){
DIR *cDir;
struct dirent *entrada;
cDir=opendir(ruta);
//preparamos el nivel k
//mientras existen hijos
while((entrada=readdir(cDir))){
if((strcmp(entrada->d_name, "."))&&(strcmp(entrada->d_name, ".."))){
if(entrada->d_type!=DT_DIR){//fichero
printf ("\t%s%s\n",ruta, entrada->d_name);
}else{//directorio
if (ruta[strlen(ruta)-1]!='/'){
strcat (ruta, "/");
}
strcat (ruta, entrada->d_name);
printf ("[DIR]%s\n",entrada->d_name);
rDir(ruta);
printf ("Cerrando cdir\n");
closedir (cDir);
}
}
}
}
int main(int argc, char *argv[]){
char *ruta=NULL;
printf ("%d", argc);
if (argc<2){
ruta=".";
}else{
ruta=argv[1];
}
printf ("Directorio de trabajo => [ %s ] \n", ruta );
printf ("LLamamos a la funcion rDir como parametro => %s\n", ruta);
rDir(ruta);
return 0;
}
SALIDA
===========================
2Directorio de trabajo => [ /home/arcangel ]
LLamamos a la funcion rDir como parametro => /home/arcangel
[DIR].kde
[DIR]share
[DIR]config
/home/arcangel/.kde/share/configkpgprc
/home/arcangel/.kde/share/configkonqsidebartng.rc
/home/arcangel/.kde/share/configkdeglobals
/home/arcangel/.kde/share/configkdedrc
/home/arcangel/.kde/share/configkconf_updaterc
/home/arcangel/.kde/share/configkickerrc
/home/arcangel/.kde/share/configkcookiejarrc
[DIR]session
/home/arcangel/.kde/share/config/sessionkcontrol_10d4cb9570000113923548900000049270016_1139304381_550682
/home/arcangel/.kde/share/config/sessionkonsole_10d4cb9570000113923507800000049270009_1139304381_532784
/home/arcangel/.kde/share/config/sessionkwin_10d4cb9570000113923488300000049270000_1139304381_573846
Cerrando cdir
/home/arcangel/.kde/share/config/session·yï·yï· yï· yï·šyï·šyï·°yï·°yï·žyï·žyï·Àyï·Àyï·Èyï·Èyï·Ðyï·Ðyï·Øyï·Øyï·àyï·àyï·èyï·èyï·ðyï·ðyï·øyï·øyï·
Cerrando cdir
/home/arcangel/.kde/share/config/session·ðxï·ðxï·øxï·øxï·
Cerrando cdir
/home/arcangel/.kde/share/config/session·ðxï·ðxï·øxï·øxï·
Cerrando cdir
/home/arcangel/.kde/share/config/session·èxï·ðxï·ðxï·øxï·øxï·
Escribí este programa que lista recursivamente ficheros y directorios, o al
menos eso es lo que se intenta, alguna ayudita de donde puede estar el
fallo :).
Muchas gracias y un saludo Cachorro
#include <errno.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
const int MAXPATHLEN=1024;
///#include <pme.h> expresiones regulares
void rDir(char *ruta){
DIR *cDir;
struct dirent *entrada;
cDir=opendir(ruta);
//preparamos el nivel k
//mientras existen hijos
while((entrada=readdir(cDir))){
if((strcmp(entrada->d_name, "."))&&(strcmp(entrada->d_name, ".."))){
if(entrada->d_type!=DT_DIR){//fichero
printf ("\t%s%s\n",ruta, entrada->d_name);
}else{//directorio
if (ruta[strlen(ruta)-1]!='/'){
strcat (ruta, "/");
}
strcat (ruta, entrada->d_name);
printf ("[DIR]%s\n",entrada->d_name);
rDir(ruta);
printf ("Cerrando cdir\n");
closedir (cDir);
}
}
}
}
int main(int argc, char *argv[]){
char *ruta=NULL;
printf ("%d", argc);
if (argc<2){
ruta=".";
}else{
ruta=argv[1];
}
printf ("Directorio de trabajo => [ %s ] \n", ruta );
printf ("LLamamos a la funcion rDir como parametro => %s\n", ruta);
rDir(ruta);
return 0;
}
SALIDA
===========================
2Directorio de trabajo => [ /home/arcangel ]
LLamamos a la funcion rDir como parametro => /home/arcangel
[DIR].kde
[DIR]share
[DIR]config
/home/arcangel/.kde/share/configkpgprc
/home/arcangel/.kde/share/configkonqsidebartng.rc
/home/arcangel/.kde/share/configkdeglobals
/home/arcangel/.kde/share/configkdedrc
/home/arcangel/.kde/share/configkconf_updaterc
/home/arcangel/.kde/share/configkickerrc
/home/arcangel/.kde/share/configkcookiejarrc
[DIR]session
/home/arcangel/.kde/share/config/sessionkcontrol_10d4cb9570000113923548900000049270016_1139304381_550682
/home/arcangel/.kde/share/config/sessionkonsole_10d4cb9570000113923507800000049270009_1139304381_532784
/home/arcangel/.kde/share/config/sessionkwin_10d4cb9570000113923488300000049270000_1139304381_573846
Cerrando cdir
/home/arcangel/.kde/share/config/session·yï·yï· yï· yï·šyï·šyï·°yï·°yï·žyï·žyï·Àyï·Àyï·Èyï·Èyï·Ðyï·Ðyï·Øyï·Øyï·àyï·àyï·èyï·èyï·ðyï·ðyï·øyï·øyï·
Cerrando cdir
/home/arcangel/.kde/share/config/session·ðxï·ðxï·øxï·øxï·
Cerrando cdir
/home/arcangel/.kde/share/config/session·ðxï·ðxï·øxï·øxï·
Cerrando cdir
/home/arcangel/.kde/share/config/session·èxï·ðxï·ðxï·øxï·øxï·