elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda LECTURA ARCHIVOS BINARIOS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda LECTURA ARCHIVOS BINARIOS  (Leído 2,593 veces)
Omar_2013

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Duda LECTURA ARCHIVOS BINARIOS
« en: 11 Mayo 2014, 20:01 pm »

Buen Día, mi duda es acerca de la lectura de archivos Binarios, este es el código:

Código
  1. void CargarInformacion(struct TNodo<Usuarios> **Lista)
  2. {
  3.     struct Usuarios Load;
  4.  
  5.     ifstream Datos("Base De Datos.dat", ios::binary);
  6.  
  7.     if (Datos.good())
  8.        while (!Datos.eof())
  9.              if ( Datos.read((char*)&Load, sizeof(Load)) )
  10.                 InsertarFinal(Lista, Load);
  11.  
  12.     Datos.close();
  13. }
  14.  

La Funcion funciona!!! pero no se por que hay que colocar esto

Código
  1. Datos.read((char*)&Load, sizeof(Load))


dentro de un if, le pregunte a alguien pero me dice que es para que no lea 2 veces lo mismo, pero esa es la duda... por que????


Gracias por su tiempo.  ;)


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda LECTURA ARCHIVOS BINARIOS
« Respuesta #1 en: 11 Mayo 2014, 20:08 pm »

read() retorna el número de bytes leídos. Si leyese 0 bytes, qué pasaría?
Ese if() comprueba que se lea un número diferente de 0 bytes.


En línea

Omar_2013

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Duda LECTURA ARCHIVOS BINARIOS
« Respuesta #2 en: 11 Mayo 2014, 20:11 pm »

Muchas Gracias por aclararme la duda.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Duda LECTURA ARCHIVOS BINARIOS
« Respuesta #3 en: 11 Mayo 2014, 20:11 pm »

Espera Espera, me equivoqué con otro read().

El return de ese read() es el objeto ifstream. Un ifstream retorna TRUE si todo va bien, y retorna FALSE si hubo errores.

EDITO: Por si te ayuda, CPlusPlus
« Última modificación: 11 Mayo 2014, 20:14 pm por ivancea96 » En línea

Omar_2013

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Duda LECTURA ARCHIVOS BINARIOS
« Respuesta #4 en: 11 Mayo 2014, 20:16 pm »

OK.   :)
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda LECTURA ARCHIVOS BINARIOS
« Respuesta #5 en: 11 Mayo 2014, 20:24 pm »

Por cierto en ese bucle:
Código
  1. while (!Datos.eof())
  2.   if ( Datos.read((char*)&Load, sizeof(Load)) )
  3.      InsertarFinal(Lista, Load);
No es necesario utilizar la función miembro eof, se puede acortar a:
Código
  1. while (Datos.read((char *) &Load, sizeof(Load)))
  2.   InsertarFinal(Lista, Load);

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
Omar_2013

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Duda LECTURA ARCHIVOS BINARIOS
« Respuesta #6 en: 11 Mayo 2014, 20:28 pm »

Gracias lo tendré en cuenta.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Archivos Binarios
Programación Visual Basic
David Vans 5 2,254 Último mensaje 14 Octubre 2006, 19:32 pm
por Nymphetaminito
Archivos Binarios
.NET (C#, VB.NET, ASP)
David Vans 2 3,502 Último mensaje 1 Junio 2007, 13:45 pm
por »~^~«CkNU!»~^~«
Archivos binarios en VB6???
Programación Visual Basic
Bb-7 1 3,951 Último mensaje 10 Abril 2008, 17:26 pm
por krackwar
foto lectura, y lectura veloz, scanning y otros metodos de lectura rapida....
Foro Libre
Kase 3 12,953 Último mensaje 4 Febrero 2014, 08:47 am
por camilo_
Escritura y lectura de archivos binarios
Programación C/C++
++c 7 3,874 Último mensaje 10 Septiembre 2014, 23:21 pm
por ++c
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines