Autor
|
Tema: Problema al leer un archivo binario en C (Leído 5,426 veces)
|
the_jocker
Desconectado
Mensajes: 41
|
Buenas, estupendo foro, no hace mucho plantee una duda sobre un programa que quería hacer, como hace poco me desocuparon del trabajo(para no decir echaron), me dispuse a terminarlo, no sabia nada de estructura pero ahora me defiendo, yo creo un archivo y escribo en él, funciona perfecto, hago una consulta, de nuevo perfecto, pero cuando quiero que me tire datos en masa, osea que imprima por pantalla todos los datos, me salen caracteres raros como si el problema fuera de lectura. void MOSTRAR_ARTICULOS() { FILE *stock; struct articulos { int codigo; char art[50]; int cantidad; float precio; }datos; stock = fopen("Stock.in","rb"); fread(&datos ,sizeof(datos ),1,stock ); printf("\n_______________________________________________________"); printf("\n%-12s%-18s%-10s%-10s","Codigo","Articulo","Cantidad", "Precio"); { printf("\n%-12d%-18s%-10d%10.2f",datos. codigo,datos. art, datos.cantidad,datos.precio); fread(&datos ,sizeof(datos ),1,stock ); } printf("\n______________________________________________________\n"); system("read -p'Presione Enter para Continuar' var"); }
Y si yo ingrese 10 productos lo da a los 10 pero con caracteres raros. Ya intente soluciones: -Cambiar la extensión del archivo, primero era .dat, ahora en .in. -Lo que vi yo era que la imagen del archivo guardado se asemeja más a una foto que a un archivo binario.
|
|
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
Define datos de esta forma y fuera de la función: typedef struct articulos { int codigo; char art[50]; int cantidad; float precio; }datos __attribute__ ((packed));
Saludos.
|
|
|
En línea
|
|
|
|
the_jocker
Desconectado
Mensajes: 41
|
Si, genial, ahora porque desde afuera funciona bien, y desde la misma función no,es más, hasta se me colorea la sintaxis de la estructura, que groso. Edito: Ya logre asignar valores desde una estructura hacia otra, pero no completa, yo tengo una estructura y otra de la misma caracteristica, a la segunda le debo modificar algo, entonces saco los valores y los asigo asi: subtotal = y * datos.precio; datos_ventas.codigo_ventas = datos.codigo; datos_ventas.cantidad_ventas = y; datos_ventas.articulo_ventas = datos.articulo; datos_ventas.precio_ventas = datos.precio; datos_ventas.total = datos_ventas.total + subtotal; fwrite(&datos_ventas ,sizeof(struct ventas ),1,ventas_cont );
Se escriben bien salvo la cuarta linea, que me dice que no puedo asignar char[50] a otro de tipo char * y no entiendo si articulo_ventas y articulo son de tipo char[50]
|
|
« Última modificación: 12 Agosto 2012, 00:13 am por the_jocker »
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
En C no puedes utilizar el operador de asignación "=" con arrays, en su lugar debes utilizar la función "strcpy" (prototipo en <string.h>).
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
the_jocker
Desconectado
Mensajes: 41
|
Gracias pude resolver mi problema, cunado esté terminado el programa, lo voy compartir para que los que se inicien en C puedan ver que con poco se puede hacer mucho.Gracias.
|
|
|
En línea
|
|
|
|
CSQCasimiro
Desconectado
Mensajes: 20
|
acordarte también, que si vas a sacar todos los datos del archivo de una, tenes que saber la cantidad de registros que contiene y almacenarlo en un vector de la estructura. osea, si yo tengo 5 registros del tipo de estructura "fulano" , al sacarlos de una debería hacer el sizeof de fulano y al siguiente parámetro ponerle 5 en vez de 1, y lo otro que te quería agregar, es que vos al archivo le podes poner la extensión que se te cante, ya sea .dat o .fulanoestuboaquiescribiendoextenciones
|
|
|
En línea
|
"Mejora el Algoritmo, no el Código" "Buscando todos los días ser mejor que ayer"
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
leer archivo BINARIO
« 1 2 3 4 »
Programación Visual Basic
|
WestOn
|
37
|
21,833
|
3 Octubre 2008, 18:22 pm
por WestOn
|
|
|
Problema Al leer Archivo En C
Programación C/C++
|
ZedGe
|
3
|
6,360
|
22 Enero 2012, 11:27 am
por Xandrete
|
|
|
Problema al leer archivo en Java
Java
|
thekill01
|
1
|
2,662
|
27 Mayo 2012, 03:02 am
por [Case]
|
|
|
Tengo un problema (convertidor a binario)
Java
|
DarkSorcerer
|
2
|
2,965
|
2 Septiembre 2012, 03:08 am
por DarkSorcerer
|
|
|
Problema modificación archivo binario java
Programación General
|
solid120
|
0
|
3,598
|
3 Junio 2013, 11:28 am
por solid120
|
|