Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - J88A_T

#1
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)


#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 ;

}