Autor
|
Tema: Ayuda - Archivo binario (Leído 2,634 veces)
|
Cero++
|
Buenas, hice un ejercicio donde tenía que cargar en un archivo binario pares de datos donde uno era float y el otro int. El problema es, que cuando hice otro programa para cargar un vector con esos datos guardados en ese archivo, no me muestra nada. Aquí les dejo el código, sinceramente, no veo dónde está el problema, porque ni siquiera en la compilación me da error. Pares{ float a, int b} main(){ Pares aux; vector<Pares> P; ifstream entrada; entrada.open(/*nom_archi*/,ios::binary|ios::ate); if(!entrada.is_open(){ /*algo...*/ } int tam_archi=entrada.tellg()/sizeof(Pares); entrada.seekg(0); for(int i=0;i=tam_archi;i++){ entrada.read(reinterpret_cast <char*> (&aux),sizeof(aux)); P.push_back(aux); } entrada.close(); fori(P.size()){ cout<<P[i].a<<" "<<P[i].b<<endl; /*No muestra nada*/ }
Esto es un ejemplo del programa que hice, para que no sea tan largo de leer, al finalizar la compilación no me saltan errores, pero no muestra el vector, como si no tuviese nada, la lectura debería ir bien y cada vez que leo un "Par" debería ponerlo en el vector, pero no es el caso.
|
|
|
En línea
|
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]
|
|
|
Loretz
Desconectado
Mensajes: 117
|
Hay un problema desde la primera línea: Pares no tiene definido el tipo. {float a, int n} no es una expresión C++ válida. Fíjate que están separados por una coma y que int n no termina en ; También falta el ; al final de la expresión. Después hay otras cosas, pero deberías tratar primero de que compile.
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Será que en la línea 12 asignas 2 veces la variable i?
|
|
|
En línea
|
|
|
|
Cero++
|
Hay un problema desde la primera línea: Pares no tiene definido el tipo. {float a, int n} no es una expresión C++ válida. Fíjate que están separados por una coma y que int n no termina en ; También falta el ; al final de la expresión. Después hay otras cosas, pero deberías tratar primero de que compile. Es un ejemplo, ya se que falta el tipo de dato (struct) y los otros errores de sintaxis ; puse un "prototipo" de lo que hice, para que me dijeran qué podría estar mal a nivel lógico jaja espero me comprendas, sino, pongo el código exacto de lo que hice.
|
|
|
En línea
|
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]
|
|
|
Cero++
|
Será que en la línea 12 asignas 2 veces la variable i?
Cómo que la asigno dos veces? en la primera entrada de la estructura iterativa lo declaro y ya más luego pongo desde dónde leer y hasta dónde hacerlo. Me fije en el programa base que había hecho, tenía un pequeño problema, lo modifique y probé nuevamente (anduvo) pero al hacer éste prototipo, para ver si realmente se guardaron los datos en el archivo, cuando itero el vector de pares, éste se encuentra vacío jaja me ha dejado en las nubes, releí la teoría, pero no he hecho nada incorrecto, a mi parecer jaja
|
|
|
En línea
|
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]
|
|
|
K-YreX
|
Lo que CalgaryCorpus quiere decir con que asignas dos veces la variable <i> es lo siguiente: for(int i = 0; i = tam_archi; i++){}
Ahí estás inicializando la variable <i> a 0, seguidamente le asignas el valor <tam_archi> y ya se ejecuta el <for>. El segundo campo del <for> es incorrecto.
Es un ejemplo, ya se que falta el tipo de dato (struct) y los otros errores de sintaxis ; puse un "prototipo" de lo que hice, para que me dijeran qué podría estar mal a nivel lógico jaja espero me comprendas, sino, pongo el código exacto de lo que hice.
Te recomiendo para este tipo de errores que copies el código original, ya que el error puede deberse a que haya algo mal implementado y que tú estés pasando por alto. Si es muy largo puedes copiar sólo el bloque más relevante.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
EdePC
|
Saludos, - Y se puede leer así de esa forma tan indiscriminada un fichero binario ?, te muestro el siguiente ejemplos sencillo que escribe y lee un Float y un Int a/desde un fichero binario: #include <iostream> #include <fstream> #include <vector> using namespace std; int main() { float ofloat = 5.6; int oint = 10; ofstream ofile( "file.bin", ios::out | ios::binary ); ofile.write( (char *) &ofloat, sizeof(float) ); ofile.write( (char *) &oint, sizeof(int) ); ofile.close(); float ifloat = 0; int iint = 0; ifstream ifile( "file.bin", ios::in ); ifile.read( (char *) &ifloat, sizeof(float) ); ifile.read( (char *) &iint, sizeof(int) ); cout << ifloat << endl; cout << iint << endl; ifile.close(); return 0; }
|
|
|
En línea
|
|
|
|
Cero++
|
Lo que CalgaryCorpus quiere decir con que asignas dos veces la variable <i> es lo siguiente: for(int i = 0; i = tam_archi; i++){}
Ahí estás inicializando la variable <i> a 0, seguidamente le asignas el valor <tam_archi> y ya se ejecuta el <for>. El segundo campo del <for> es incorrecto.
Te recomiendo para este tipo de errores que copies el código original, ya que el error puede deberse a que haya algo mal implementado y que tú estés pasando por alto. Si es muy largo puedes copiar sólo el bloque más relevante. Jaja que error "boludo" no lo veía! Gracias por remarcarlo
|
|
|
En línea
|
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]
|
|
|
Cero++
|
Saludos, - Y se puede leer así de esa forma tan indiscriminada un fichero binario ?, te muestro el siguiente ejemplos sencillo que escribe y lee un Float y un Int a/desde un fichero binario: #include <iostream> #include <fstream> #include <vector> using namespace std; int main() { float ofloat = 5.6; int oint = 10; ofstream ofile( "file.bin", ios::out | ios::binary ); ofile.write( (char *) &ofloat, sizeof(float) ); ofile.write( (char *) &oint, sizeof(int) ); ofile.close(); float ifloat = 0; int iint = 0; ifstream ifile( "file.bin", ios::in ); ifile.read( (char *) &ifloat, sizeof(float) ); ifile.read( (char *) &iint, sizeof(int) ); cout << ifloat << endl; cout << iint << endl; ifile.close(); return 0; }
Mi nivel no es tan alto como para escribir un fichero como lo haces vos! jaja La próxima copio el código del compilador!
|
|
|
En línea
|
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con archivo binario, por favor.
« 1 2 »
Programación C/C++
|
carlosguay
|
12
|
7,856
|
25 Abril 2011, 13:53 pm
por Arkangel_0x7C5
|
|
|
Leer archivo binario en Vbs
Scripting
|
kapo.damy
|
2
|
4,128
|
14 Diciembre 2011, 04:51 am
por kapo.damy
|
|
|
Ayuda con programa en C (archivo binario)
Programación C/C++
|
anaceci21
|
0
|
1,721
|
28 Mayo 2013, 23:08 pm
por anaceci21
|
|
|
como guardar un arreglo en archivo binario y leerlo de nuevo? Ayuda
Programación C/C++
|
Synth3tik0
|
9
|
8,528
|
7 Junio 2013, 16:13 pm
por 0xDani
|
|
|
Busco ayuda para encotrar datos relacionados al control Remoto en un archivo Binario de un TV led
Ingeniería Inversa
|
Osmelfb5
|
0
|
17,928
|
12 Marzo 2024, 22:35 pm
por Osmelfb5
|
|