Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda Urgente Recorrido de Diresctorios

Estas en el tema de Duda Urgente Recorrido de Diresctorios en el foro de C/C++ en Foros del Web. Buenas A Todos :) Miren la cuestion es que estoi realizando un recorrido de directorios bastante simple. Recorro una carpeta la cual si tiene mas ...
  #1 (permalink)  
Antiguo 14/12/2010, 07:04
 
Fecha de Ingreso: diciembre-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Busqueda Duda Urgente Recorrido de Diresctorios

Buenas A Todos :)

Miren la cuestion es que estoi realizando un recorrido de directorios bastante simple.
Recorro una carpeta la cual si tiene mas carpetas dentro me dira cuanto elementos tengo.
En caso de que tenga ficheros .txt me imprimira los X caracteres que yo quiera.
La cuestion es que el fopen de ficheros no me da NULL cuando es otro tipo ya sea .c o .pdf

Me preguntaba como podria solucionarlo o como ago con la funcion stat() para diferenciar unos de otros.. GRACIAS DE ANTEMANO¡¡
Código c:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <dirent.h>
  4. #include <string.h>
  5. #include <sys/types.h>
  6. #include <sys/stat.h>
  7. #define MAX 100
  8.  
  9.  
  10. int main( int argc, char *argv[])
  11. {
  12.  
  13.  
  14.     DIR *dir;
  15.     FILE *f=NULL;
  16.     int ent,numeroEntradas;
  17.  
  18.     struct dirent *mi_dirent;
  19.     struct dirent **entradas= NULL;
  20.     struct stat datosF;
  21.  
  22.     char nombre[MAX];
  23.     char extension[MAX];
  24.     char Elemento[10];
  25.     char c;
  26.     int x=0;
  27.     int cont=2;
  28.     strcpy(nombre,argv[1]);
  29.  
  30.     printf("\n .Listado de: %s .\n",nombre);
  31.     strcat(nombre,"/");
  32.  
  33.     if ( (dir = opendir( argv[1] )) == NULL )
  34.     {
  35.         perror( "opendir" );
  36.         exit( -1 );
  37.     }
  38.  
  39.     while ( (mi_dirent = readdir( dir )) != NULL )
  40.     {
  41.         if ( (strcmp(mi_dirent->d_name, ".") != 0) && (strcmp(mi_dirent->d_name, "..")!= 0) )
  42.         {
  43.             strcpy(extension,nombre);
  44.             strcat(extension,mi_dirent->d_name);
  45.             ent=stat(extension,&datosF);
  46.  
  47.             if (S_ISDIR(datosF.st_mode)){
  48.  
  49.                 strcpy(Elemento,"Elemento");
  50.                 numeroEntradas = scandir (extension, &entradas, NULL, NULL);
  51.  
  52.                 if ((numeroEntradas-2)!=1)
  53.                 {
  54.                     strcat(Elemento,"s");
  55.                 }
  56.                 printf(" .Directorio:  %s [%d %s].\n",mi_dirent->d_name,numeroEntradas-2,Elemento);
  57.  
  58.             }
  59.  
  60.             if (S_ISREG(datosF.st_mode))  {
  61.              
  62.             printf(" .Fichero ");
  63.                 printf("%s: ",mi_dirent->d_name);
  64.                 f = fopen(extension,"r+");
  65.  
  66.                 if ( f != NULL){
  67.         printf("Primeros %d elementos [ ",cont);              
  68.         x=0;
  69.                 while (!feof(f) && x<cont){
  70.                    
  71.             fscanf (f,"%c",&c);
  72.                     printf("%c",c);
  73.                     x++;
  74.                 }
  75.                 printf(" ]\n");
  76.             }
  77.                }   
  78.             }
  79.  
  80.        
  81.     }
  82.     printf("\n\n");
  83.  
  84.     closedir( dir );
  85.  
  86.     return 0;
  87. }

Última edición por cbecmor; 14/12/2010 a las 07:20

Etiquetas: directorios, ficheros, funcion, recorrido, stat
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:58.