• Domingo 15 de Diciembre de 2024, 10:55

Autor Tema:  Re: Q hago mal???  (Leído 1522 veces)

lechu

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Q hago mal???
« en: Lunes 7 de Julio de 2003, 13:57 »
0
Trato de leer un fichero de texto y meter los datos en una estructura para despues usarla. el codigo es el siguiente:

#include <stdio.h>

main()
{
FILE *archivo;
int i;
struct
    {
    char num_cuadro[2];
    char anno[4];
    char provincia[2];
    }cuadro4;

//abro bien el archivo

/*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:

misterwilliam

  • Miembro MUY activo
  • ***
  • Mensajes: 291
    • Ver Perfil
Re: Q hago mal???
« Respuesta #1 en: Miércoles 9 de Julio de 2003, 02:09 »
0
Porqué no intenta lo siguiente, no sé si funcione así, pero quizás valga la pena intentarlo así:

_________________________________
//quizás sea necesario incluir esto:

include <string.h>

//abrir el archivo así:

archivo = fopen("fichero.txt", "w+");

_________________________________

Es sólo una idea, como ya lo mencioné, pero ojalá le sirva de alguna ayuda. Mucha suerte y Chao!! :clown:
¡ Todo está en la mente !

lechu

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Q hago mal???
« Respuesta #2 en: Miércoles 9 de Julio de 2003, 12:54 »
0
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?????

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Q hago mal???
« Respuesta #3 en: Miércoles 9 de Julio de 2003, 17:09 »
0
aqui esta el problema:
 
Código: Text
  1.  
  2. for (i=0;i<3;i++)
  3. {
  4.   letra=fgetc(archivo);
  5.   cuadro4.num_cuadro=letra;
  6. }
  7. for (i=0;i<5;i++)
  8. {
  9.   letra=fgetc(archivo);
  10.   cuadro4.anno=letra;
  11. }
  12.  
  13.  

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
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

lechu

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Q hago mal???
« Respuesta #4 en: Martes 15 de Julio de 2003, 09:05 »
0
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: