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 - gar

#1
buenas a todos,
mi duda es que tengo que crear un programa donde una de las partes es crear una funcion para abrir un archivo pasandole como parametro de entrada el nombre de archivo y el "r" de read (que ahora no me acuerdo como se llama el parametro) y me devuelva el identificador del archivo.
el problema es que el identificador no me lo devuelve bien, he probado a printearlos dentro de la funcion y en el main y tienen diferente valor.
si printeo el archivo dentro de la funcion me lo hace bien, pero di lo intento fuera de la funcion no. esta claro que esto es por el identificador, que no lo recoge bien el main.
por que puede ser????

os dejo el programa y el archivo a leer:
texto.txt:
12345        jorge       gomez
43212        andrea         perez
con los campos separados por tabulador

programa:
__________________________________________________________________________
#include <stdlib.h>
#include <stdio.h>
void abrir(char nom[],FILE *fich, char b[]){
     char nombre[40],dni[10],apellido[100];
   
     fich=fopen(nom,b);
     
     fscanf (fich, " %[^\t]",dni);                 
     fscanf (fich, " %[^\t]",nombre);
     fscanf (fich, " %[^\t]",apellido);
     
     printf("%s    %s     %s\n",dni,nombre,apellido);
     printf(" valor del identificador:  %d         ------------\n",fich);
}

int main(){
    FILE *fichlec,*fichesc;
    char nombre[40],apellido[100],dni[10],nom[100],b[]="r";

    printf ("introduce el nombre del archivo de lectura");
    scanf ("%s",nombre);
   
    abrir(nombre,fichlec, b);
    printf("hasta aqui funciona bien\n");
   
    printf("aqui imprimo otro valor de identificador y rompo en el fscanf\n");
    printf(" valor del identificador:  %d         ------------\n",fichlec);
    fscanf (fichlec, " %[^\t]",dni);   
    printf("AAAAAAAAAAAAAAAAAAAA");             
    fscanf (fichlec, " %[^\t]",nom);
    fscanf (fichlec, " %[^\t]",apellido);
    printf("%s    %s     %s",dni,nom,apellido);
    system("pause");
}
_______________________________________________________________________

alguna idea de por que puede ser?como tengo que hacer el llamamiento a la funcion para que me lo devuelva bien??

gracacias!!!!