Autor
|
Tema: Problema al usar el fread al leer vectores en una estructura (Leído 2,603 veces)
|
matilp
Desconectado
Mensajes: 3
|
hola....quisiera que me ayuden a solucionar este problema ya que soy principiante y no tengo mucha idea de como resolverlo
este es el codigo:
#include<stdio.h> #include<string.h> #include<stdlib.h>
typedef struct { char fabr[20],cod[7]; float pot,fre; int stock; int serie[20]; float precio[20]; }micro;
void lectura(micro *datos,int n){ int i,j; FILE *archivo; if((archivo=fopen("productos.bdd","rb"))==NULL){ puts("error"); exit(1); } for(i=0;i<n;i++) { fread(&datos,sizeof(micro),1,archivo); }
for(i=0;i<n;i++) { puts(datos.fabr); puts(datos.cod); printf("potencia:%.1f\n",datos.pot); printf("frecuencia:%.1f\n",datos.pot); printf("stock:%d\n",datos.stock); for(j=0;j<datos.stock;j++){ printf("serie:%d\n",datos.serie[j]); printf("precio:%.1f\n",datos.precio[j]); } } fclose(archivo); }
la lectura de los datos la hace bien excepto por los vectores precio y serie que pone cualquier cosa...he probado muchas cosas pero no se como resolverlo. Creo que el error esta en como uso el fread.
pongo esta parte del codigo nada mas porque es la que me falla. Bueno desde ya muchas gracias
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Este for no hace nada útil (si 'n' fuera 3, va a leer hasta 3 veces, pero solo va a guardar en datos el último que leyó) for(i=0;i<n;i++) { fread(&datos ,sizeof(micro ),1,archivo ); }
También, asegúrate de que los datos en el archivo son correctos. Es raro que solo lea así las matrices.
|
|
|
En línea
|
|
|
|
matilp
Desconectado
Mensajes: 3
|
hola gracias por responder......ahi probe con esto:
fread(&datos,sizeof(micro),1,archivo); while(!feof(archivo)) { i++; fread(&datos,sizeof(micro),1,archivo); }
pero me sigue saliendo leyendo mal esa parte del archivo
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Insisto, no te sirve de nada leer todos los registros del archivo sobre la misma variable. Al final, solo estás leyendo el último, tenlo en cuenta. Prueba a leer 1 y ver si sigue el error. Primero, depura el programa para el primero, y luego implementas el while/for.
|
|
|
En línea
|
|
|
|
matilp
Desconectado
Mensajes: 3
|
dale ahora lo pruebo...muchas gracias por la ayuda!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema al usar la función fscanf para leer datos en un vector.
Programación C/C++
|
dvc
|
4
|
5,139
|
15 Abril 2012, 22:16 pm
por dvc
|
|
|
fread o alguna funcion para leer un bloc de notas
Programación C/C++
|
Erres
|
8
|
7,216
|
5 Octubre 2012, 18:19 pm
por Erres
|
|
|
Problema en C con la funcion fread y fwrite
Programación C/C++
|
M01535
|
7
|
6,315
|
1 Abril 2015, 18:05 pm
por rir3760
|
|
|
Leer archivo txt y validar estructura
.NET (C#, VB.NET, ASP)
|
elqueteconte
|
2
|
6,804
|
25 Febrero 2016, 14:52 pm
por elqueteconte
|
|
|
Error que no encuentro (C - Estructura, vectores)
Programación C/C++
|
Geg1
|
7
|
2,456
|
16 Noviembre 2016, 01:23 am
por engel lex
|
|