Buenas a todos!
Necesito ayuda con un problema para abrir archivos. Resulta que estoy haciendo un pequeño programa en el cual el usuario puede introducir el nombre del archivo y luego se llama a la respetiva funcion para abrir dicho archivo. Pero me salta el error siguiente: "invalid argument".
Probé llamando a la función directamente pasando el nombre del archivo directamente y no tengo problema. ¿Cuál es el problema?
(El nombre del archivo a abrir se setea en la variable char* second)
Necesito ayuda con un problema para abrir archivos. Resulta que estoy haciendo un pequeño programa en el cual el usuario puede introducir el nombre del archivo y luego se llama a la respetiva funcion para abrir dicho archivo. Pero me salta el error siguiente: "invalid argument".
Probé llamando a la función directamente pasando el nombre del archivo directamente y no tengo problema. ¿Cuál es el problema?
(El nombre del archivo a abrir se setea en la variable char* second)
Código (c) [Seleccionar]
#include....
....
FILE* in ;
FILE *open_A (char *A) { // Funcion para abrir el archivo. char*A es el nombre ingresado por el usuario
in = fopen(A, "r") ;
if ( in == NULL ) {
fprintf(stderr, "Value of errno: %d\n", errno);
fprintf(stderr, "Error opening file: %s\n", strerror(errno)) ;
}
printf("\n\nI have opened:%s\n", A) ;
fseek(in,0,SEEK_END) ; file_size = ftell(in) ;
printf(" --- File of size %i bytes, allocated in %p\n", file_size, &in) ; //tamaño del archivo abierto
fseek (in, 0, SEEK_SET) ;
return in ;
}
int main()
{
char word[100] ;
printf("-------------||| WELCOME |||--------------\n") ;
printf("\n\n") ;
printf("NOTE: functions are called as 'command_name-option'(no shortcuts are allowed)\n");
printf("\n\n\n\n") ;
printf("||--Default settings:\n\n") ; // memoria reservada. Funciones en otro fichero
memory_space = 2048 ;
file_RAM_A(memory_space) ;
file_RAM_B(memory_space) ;
output_RAM((memory_space*2)) ;
printf("\n\n||-----------------------------------------||\n\n") ;
do {
fflush(stdout) ;
printf("\n ...esperando al usuario....:") ;
fgets(word, 99, stdin) ;
separate(word) ; // funcion que separa el string del usuario (word) en las variables first y second. Second lleva el nombre del archivo a abrir
printf("\n You called function:%s\n", first) ;
printf("\n And argument:%s\n", second) ;
if ( (strcmp(first,"open")) == 0 )
{ open_A (second) ; } // llamo a la funcion para abrir el archivo (en la variable second)
} while ( ( (strspn(word,"quit")) != 4 ) ) ;
open_A ("mezcla.txt") ; // Este es el llamado de la funcion pero usando un string (el nombre del archivo a abrir en cuestión).
//En este caso, la funcion anda correctamente, pero no asi en el bucle do-while
printf("\n\n\n") ;
return 0 ;
}