Anda di halaman 1dari 3

Void escribir(fstream & salida){

// manejo de cadenas

Comparación

Copia

Gets

getline

Texto:

Ana 13 25000 12
Luis 23 40000 15

Binarios: .dat
( ,ios:binary)

Tam bloque
Ana 13 Luis 23 Luisa Zoila
25000 40000 23 23
12 15 40000 40000
15 15
A través de cantidad de bytes que ocupe cada bloque

Ofstream salbinario;

Ifstream entbinario;

// obligatorio colocar la sintaxis


entbinario.read(puntero Direccion,cantidad de bytes a escribir)
entbinario.read((char *) &nums, sizeof nums)

// determiner el tamanho
Sizeof(nums)/sizeof(float)

salbinario.write(puntero Direccion,cantidad de bytes a escribir)


salbinario.write((char *) &nums, sizeof nums)
Ejercicio de archivo binario:

1.- Crear un archive binario a partir de una estructura:


// librerías
#include<fstream>
Const int MAX =100

struct alumno{
char código[10];
char nombre[10];
float promedio;
} acta_notas[MAX];
Int main(){
//Creamos el archivo para escribir
ofstream salida(“acta.dat”, ios::out l ios::binary);
// llenar mi arreglo de estructuras

for(int i = 0, i< cant,i++)


{
//Acta_notas[i]
// escribo en el archivo
//salbinario.write((char *) &nums, sizeof nums)

Salida.write((char *) & Acta_notas[i], sizeof(alumno) )


Salida.close();
}
// leer archivo
//Creamos el archivo para leer
ifstream entrada(“acta.dat”, ios::in l ios::binary);
//cantidad de bytes que ocupa o el tamanho
int tam= sizeof(alumno);

//numero de registros
Tellp= posición actual
Tellg= tam total registros
Seekp(desplazamiento, posicion)=mueve el puntero de lectura a una posición especifica
Seekg(desplazamiento, posicion)= mueve el puntero de escritura a una posición especifica

Seekg(cantidad de bytes que se movera el puntero hacia adelante o atras, lugar apartir de donde
se moverá el ptr)

// si quiero ir al inicio del archivo


Entrada.seekp(0,ios::beg)

// si quiero ir al final del archivo


Entrada.seekp(0,ios::end)
// cantidad total de registros
Int tam2= entrada.tellp();
//empezar a recorrer el archive, debo ir al inicio

Entrada.seekp(0,ios::beg);
Nreg=0; cont=0;
While(!entrada.oef() && Nreg<tam2)
{
Entrada.seekp(cont,ios::beg);

Entrada.read((char *) & Acta_notas[MAX/tam], sizeof(alumno))


Cout<<Acta_notas[i].codigo;
Cont= cont+tam;

Nreg++;
}
// posicionar en una posicion indicada
Cin>> x;
If (x<nreg && x>0)
//Entrada.seekp(0,ios::beg);
cont= x*tam;
Entrada.seekp(cont,ios::beg);

Anda mungkin juga menyukai