Saludos programadores!
Veréis, tengo una pequeña duda a la que no encuentro solución. Se trata de que x ejercicio se ejecute pasándole como argumento un fichero de texto y una opción "-n".
Como requisito, se me pide que vaya barajando las posibilidades de llamada del programa, tales como llamar el programa "programa -n -n" o "programa -f -n", etc...
El caso es que para que el programa ejecute necesita llamarse o bien "programa fichero.txt -n" o "programa -n fichero.txt" o "programa fichero.txt"
El caso es que necesito identificar en argv[1] y argv[2] si dichos argumentos son ficheros de texto o no. Básicamente se utiliza para cuando no se llame "-n" y para cuando se llame "fichero.txt fichero.txt".
Por esto, había pensado en crear una función que me identifique si el argumento pasado acaba en la cadena ".txt". La función que he realizado ha quedado así:
bool ExisteFichero(char *argv[], int n)
{
int i;
bool fiok;
fiok = false;
i = 0;
do {
if((argv[n][i] == '.' && argv[n][i+1] == 't') && (argv[n][i+2] == 'x' && argv[n][i+3] == 't'))
{
fiok = true;
}
else
{
i++;
fiok = false;
}
} while(fiok!=false);
return(fiok);
}
El caso es que al llamarlo en el programa principal como ...if (ExisteFichero(argv, 1) && ExisteFichero(argv, 2)
{
cout << "errorblabñablabla..." << endl;
}
me devuelve siempre falso y sigue por el else que le sigue y no consigo darle explicación.
Tengo dos preguntas:
¿Que haríais para identificar que un argumento es un fichero de texto?
¿Como puedo corregir esta función?
Muchas gracias chicos!