Como abrir un directorio

Iniciado por comemelguevo, 20 Enero 2016, 16:55 PM

0 Miembros y 1 Visitante están viendo este tema.

comemelguevo

Hola buenas estoy realizando un programa que me han pedido en el cual tengo que leer de teclado el nombre de un archivo .srt, y abrir su directorio, cabe decir que todos los .srt, están en /datos/subtitulos/---.srt. Mi duda es como hacer para que esto vaya variando y como incluir el directorio, os incluyo mi función main, donde se tendría que abrir susodicho .srt:


int main(){
   bool si=true;
   const int MAX = 19;
   while(si){
      char NombreFichero[MAX];
      cout << "Un fichero de subtitulos"
      "(de practicasPROG1/datos/subtitulos): " << flush;
      cin >> NombreFichero;
      ifstream z;
      z.open(NombreFichero);
      if(contarSubtitulos(NombreFichero)>0){
         cout << "El fichero " << NombreFichero
               << " ha sido leido y contiene "
               << contarSubtitulos(NombreFichero)
               << " subtitulos que han sido leidos" << endl;
         ordenes();
         char d[10];
         char f[MAX];
         int e;
         int g;
         cout << "orden?";
         cin >> d >> f >> e >> g;
         convertir(d);
         convertir(f);
         operaciones(d, f, e, g, NombreFichero);
         if(strcmp(d,"fin")==0){
         si=false;
         }
         else if (strcmp(d,"fichero")==0){
            NombreFichero[MAX]=d[MAX];
            z.open(NombreFichero);
         }
      }
      else{
         cout << "El fichero " << NombreFichero << " no ha podido ser leido"
               << endl;
      }
   }
}
     

MAFUS

#1
Crea, mediante array de strings o en un fichero de configuración, las rutas donde tu programa tendrá que mirar si hay el .srt que busca el usuario; y después que vaya probando ruta por ruta si el archivo existe y cargue la primera aparición o le diga al usuario que no existe.

Yo lo he hecho con arrays:
#include <stdio.h>
#include <string.h>

int main()
{
   FILE *fp;
   char cadena[80];
   char directorio[2][80];
   char archivo[80];
   char ruta[165];
   char const extension[] = ".txt";
   int i;
   int encontrado;
   int caracteres;
   
   strcpy(directorio[0], "./prueba/");
   strcpy(directorio[1], "./prueba2/");
   
   printf("Nombre el archivo a buscar: ");
   scanf("%79s", archivo);
   puts("\n");
   
   for(i = 0, encontrado = 0; i < 2 && !encontrado; ++i) {
       ruta[0] = '\0';
       strcat(ruta, directorio[i]);
       strcat(ruta, archivo);
       strcat(ruta, extension);
       fp = fopen(ruta, "r");
       if(fp)
           encontrado = 1;
   }
   
   if(encontrado) {
       caracteres = printf(" Contenido de %s\n", archivo);
       for(i = 0; i < caracteres; ++i)
           printf("-");
       puts("");
       while(!feof(fp)) {
           fscanf(fp, "%s", cadena);
           puts(cadena);
           cadena[0] = '\0';
       }
   }
   else {
       printf("El archivo %s no ha sido encontrado\n", archivo);
   }
   return(0);
}


Así suponiendo que hay un archivo llamado prueba.txt en el directorio prueba, con texto en su interior 'prueba'; y un archivo llamado prueba2.txt en el directorio prueba2, con texto en su interior 'prueba2':

Nombre el archivo a buscar: prueba


Contenido de prueba
---------------------
prueba




Nombre el archivo a buscar: prueba2


Contenido de prueba2
----------------------
prueba2




Nombre el archivo a buscar: prueba3


El archivo prueba3 no ha sido encontrado


comemelguevo

Cita de: MAFUS en 20 Enero 2016, 19:22 PM
Crea, mediante array de strings o en un fichero de configuración, las rutas donde tu programa tendrá que mirar si hay el .srt que busca el usuario; y después que vaya probando ruta por ruta si el archivo existe y cargue la primera aparición o le diga al usuario que no existe.

Yo lo he hecho con arrays:
#include <stdio.h>
#include <string.h>

int main()
{
   FILE *fp;
   char cadena[80];
   char directorio[2][80];
   char archivo[80];
   char ruta[165];
   char const extension[] = ".txt";
   int i;
   int encontrado;
   int caracteres;
   
   strcpy(directorio[0], "./prueba/");
   strcpy(directorio[1], "./prueba2/");
   
   printf("Nombre el archivo a buscar: ");
   scanf("%79s", archivo);
   puts("\n");
   
   for(i = 0, encontrado = 0; i < 2 && !encontrado; ++i) {
       ruta[0] = '\0';
       strcat(ruta, directorio[i]);
       strcat(ruta, archivo);
       strcat(ruta, extension);
       fp = fopen(ruta, "r");
       if(fp)
           encontrado = 1;
   }
   
   if(encontrado) {
       caracteres = printf(" Contenido de %s\n", archivo);
       for(i = 0; i < caracteres; ++i)
           printf("-");
       puts("");
       while(!feof(fp)) {
           fscanf(fp, "%s", cadena);
           puts(cadena);
           cadena[0] = '\0';
       }
   }
   else {
       printf("El archivo %s no ha sido encontrado\n", archivo);
   }
   return(0);
}


Así suponiendo que hay un archivo llamado prueba.txt en el directorio prueba, con texto en su interior 'prueba'; y un archivo llamado prueba2.txt en el directorio prueba2, con texto en su interior 'prueba2':

Nombre el archivo a buscar: prueba


Contenido de prueba
---------------------
prueba




Nombre el archivo a buscar: prueba2


Contenido de prueba2
----------------------
prueba2




Nombre el archivo a buscar: prueba3


El archivo prueba3 no ha sido encontrado


Muchas gracias!!! :)