/*aqui empieza lo que no funciona, voy leyendo letra a letra y metiendo los datos en el campo de la estructura correspondiente*/
for (i=0;i<3;i++) cuadro4.num_cuadro=fgetc(archivo); for (i=0;i<5;i++) cuadro4.anno=fgetc(archivo); for (i=0;i<3;i++) cuadro4.provincia=fgetc(archivo);
/*pongo unos printf para ver si ha metido bien los datos y no xq pone unas cosas muy raras*/ printf ("%sn",cuadro4.num_cuadro); printf ("%sn",cuadro4.anno); printf ("%sn",cuadro4.provincia);
//cierro el archivo y se acabo:ayuda:
Título: Re: Q hago mal???
Publicado por: misterwilliam en Miércoles 9 de Julio de 2003, 02:09
Porqué no intenta lo siguiente, no sé si funcione así, pero quizás valga la pena intentarlo así:
Es sólo una idea, como ya lo mencioné, pero ojalá le sirva de alguna ayuda. Mucha suerte y Chao!! :clown:
Título: Re: Q hago mal???
Publicado por: lechu en Miércoles 9 de Julio de 2003, 12:54
PONGO EL PROGRAMA ENTERO PARA VER SI ME SOLUCIONAN EL PROBLEMILLA==> /*Abro las librerias*/ #include <stdio.h> #include <string.h> //creo q sobra pero...
/*Tengo las siguientes variables creadas y la estructura donde quiero ir metiendo los datos que leo*/ main() { FILE *archivo; char letra; char cadena[2]; char pausa[2]; struct { char num_cuadro[2]; char anno[4]; }cuadro4;
/*Ahora empieza el programa,primero abro el archivo de texto en modo lectura*/ archivo=fopen("fichero.txt","r"); if (archivo==NULL) {....}//ERROR
/*Despues hago 2 for para ir leyendo el archivo caracter a caracter e ir metiendo los datos en la estructura creada*/ for (i=0;i<3;i++){ letra=fgetc(archivo); cuadro4.num_cuadro=letra; } for (i=0;i<5;i++){ letra=fgetc(archivo); cuadro4.anno=letra; }
/*Hago una comprobacion para ver q datos ha leido presentando por pantalla los arrays*/ printf("los datos de nº cuadro son: %sn",cuadro4.num_cuadro); printf("los datos de año son: %sn",cuadro4.anno); gets(pausa);
/*cierro el archivo*/ if (fclose(archivo)!=0) { printf("ERROR al cerrar el archivo"); } }
EL PROBLEMA ES QUE AL EJECUTARLO LOS DATOS DE LAS 2 CADENAS SON IGUALES,SON LOS DE AÑO,AQUI LES PONGO LA SALIDA PARA QUE ENTIENDAN LO QUE DIGO: Escribe la ruta del archivo a visualizar: c:eic04p00.txt VISUALIZANDO.... los datos de n¦ cuadro son: 2000 los datos de a±o son: 2000 PORQUE NO ME PRESENTA EN UNO EL Nº DE CUADRO Y EN EL OTRO EL AÑO?????
Título: Re: Q hago mal???
Publicado por: JuanK en Miércoles 9 de Julio de 2003, 17:09
aqui esta el problema:
Código: Text
for (i=0;i<3;i++)
{
letra=fgetc(archivo);
cuadro4.num_cuadro=letra;
}
for (i=0;i<5;i++)
{
letra=fgetc(archivo);
cuadro4.anno=letra;
}
Es mejor que utilices fread, porque a mi modo de verlo es mas confiable, ya quer fgetc, como su nombre lo indica, solo te lee un caracter, por esa la cadena comienza desde ese caracter, mientras que con fread, puedes leer lo que quieras, tambien es importante que te apoyes con fseek para tener mas control sobre el puntero.
utiliza algo mas o menos asi¨:
fread(letra,sizeof(letra),1, archivo);
chau
Juank
Título: Q hago mal???
Publicado por: lechu en Martes 15 de Julio de 2003, 09:05
Ya funciona muchas gracias, al final lo hice con: leidos=fread(&cuadro4,sizeof(cuadro)+1,1,archivo); leo la estructura completa que queda dividida en campos:gracias: