Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
MIGUEL Á. TOLEDO MARTÍNEZ<br />
int main(void)<br />
{<br />
La línea creditoSalida.seekp( (cliente.numeroCuenta - 1 ) * sizeof(datoCliente) ); ubica el<br />
apuntador de posición colocar para el objeto creditoSalida en la localidad de bytes calculada<br />
por (cliente.numeroCuenta - 1 ) * sizeof(datoCliente). Debido a que el número de cuenta está<br />
entre 1 y 100, se resta 1 al número de cuenta cuando se calcula la localidad, en bytes, del<br />
registro. Por lo tanto, para el registro 1 el apuntador de posición de archivo se establece al byte<br />
0 del archivo. Observe que el objeto creditoSalida de ofstream se abre mediante el modo de<br />
apertura de archivo ios::ate. El apuntador de posición de archivo colocar se establece<br />
inicialmente al final del archivo, pero los datos se pueden escribir en cualquier lugar de él.<br />
LECTURA SECUENCIAL <strong>DE</strong> DATOS <strong>DE</strong>S<strong>DE</strong> UN ARCHIVO <strong>DE</strong> ACCESO ALEATORIO<br />
Ejemplo 7.28<br />
ofstream creditoSalida("credito.dat", ios::ate);<br />
if(!creditoSalida)<br />
{<br />
cerr > cliente.nombre >> cliente.balance;<br />
creditoSalida.seekp( (cliente.numeroCuenta - 1 ) * sizeof(datoCliente) );<br />
creditoSalida.write(reinterpret_cast(&cliente),<br />
sizeof(datoCliente));<br />
cout > cliente.numeroCuenta;<br />
}//Fin de while<br />
En las secciones anteriores creamos un archivo de acceso aleatorio y escribimos datos en ese<br />
archivo. En esta sección desarrollaremos un programa al que llamaremos: LECSEC.CPP, que<br />
lee el archivo de manera secuencial e imprime solamente los registros que contienen datos. Estos<br />
programas producen un beneficio adicional: los registros se encuentran ordenados.<br />
FUNDAMENTOS – <strong>LECCIÓN</strong> 7 7-48