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;
}
}
}
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
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!!! :)