





Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
aprender sobre archivos y programación de acceso aleatorio
Tipo: Apuntes
1 / 9
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!






11.5 Archivos Binarios Los datos de estos archivos se guardan en binario. Cuando queramos almacenar valores enteros, o en coma flotante, o imágenes, etc, deberemos usar este tipo de archivos. Función para escribir datos en un archivo binario La función write() guarda datos en formato binario. ofstream identificador_de_archivo(ruta) … Identificador_de_archivo.write((char *) buf, num) Donde: buf: Dirección de memoria al buffer que contiene los datos que se envían al flujo de salida. num: El número de bytes que se envían al flujo. Crear un archivo llamado números.dat que guarde los números desde el 1 hasta el 20 #include
int main() { int x; ifstream archi("numeros.dat"); if(!archi){ cout<<"No se puede abrir el archivo"<<endl; return 1; } archi.read((char *) &x,sizeof (x)); while(archi) { cout<<x<<" "; archi.read((char *) &x,sizeof (x)); } archi.close(); return 0; } Crear un archivo llamado empleados.dat. Se deben ingresar los datos de n empleados y luego leer el archivo mostrando los datos guardados. #include
if(!lectu){ cout<<"No se puede abrir el archivo"<<endl; return 1; } bool enc=false; cout<<"Codigo del empleado a buscar : "; cin.getline(codigo,10); lectu.read((char *) &x,sizeof (x)); while(lectu && !enc) { if(strcmp(x.codigo,codigo)==0) { cout<<"Datos del empleado"<<endl; cout<<"Codigo : "<<x.codigo<<endl; cout<<"Nombre : "<<x.nombre<<endl; cout<<"Apellidos : "<<x.apellidos<<endl; cout<<"Edad : "<<x.edad<<endl; cout<<"Sueldo : "<<x.sueldo<<endl; enc=true; } else lectu.read((char *) &x,sizeof (x)); } if(!enc) cout<<"El codigo del empleado no existe"<<endl; lectu.close(); return 0; } 11.6 Funcion seekg() La función seekg se puede usar de dos maneras: identificadorseekg(pos): Posiciona el puntero del archivo en pos bytes desde el inicio del archivo. Seekg(pos, ios::seed_dir origen): Posiciona el puntero especificando los bytes como un desplazamiento desde una posición del archivo especificada por el segundo argumento. Posicion inicial relativa de seekg ios::beg Desde el principio del archivo ios::car Desde la posición actual del archivo ios::end Desde el final del archivo Crear un programa que ingrese el código de un empleado y se lea el archivo empleados.dat y se pueda modificar los datos de un empleado si existe en caso contrario mostrar el mensaje el código no existe. #include
using namespace std; struct Empleado{ char codigo[10]; char nombre[40]; char apellidos[60]; int edad; float sueldo; }; int main() { int i,n,pos; Empleado x; char codigo[10]; fstream archi("empleados.dat",ios::in | ios::out); if(!archi){ cout<<"No se puede abrir el archivo"<<endl; return 1; } bool enc=false; cout<<"Codigo del empleado a buscar : "; cin.getline(codigo,10); archi.read((char *) &x,sizeof (x)); while(archi && !enc) { if(strcmp(x.codigo,codigo)==0) { cout<<"Datos del empleado"<<endl; cout<<"Codigo : "<<x.codigo<<endl; cout<<"Nombre : "<<x.nombre<<endl; cout<<"Apellidos : "<<x.apellidos<<endl; cout<<"Edad : "<<x.edad<<endl; cout<<"Sueldo : "<<x.sueldo<<endl; enc=true; cout<<"Nuevo nombre : "; cin.getline(x.nombre,40); cout<<"Nuevos apellidos : "; cin.getline(x.apellidos,60); cout<<"Nueva edad : "; cin>>x.edad; cout<<"Nuevo sueldo : "; cin>>x.sueldo; int posActual,tamReg,r; posActual=archi.tellg(); tamReg=sizeof(x); r=posActual-tamReg; archi.seekg(r); archi.write((char *) &x,sizeof (x)); } else archi.read((char *) &x,sizeof (x)); }
lectu.read((char *) &x,sizeof (x)); } if(!enc) cout<<"El codigo del empleado no existe"<<endl; lectu.close(); escri.close(); remove("empleados.dat"); rename("auxiliar.dat","empleados.dat"); return 0; } 11.7 Ejercicios Propuestos 11
Escriba un programa que pueda llevar a cabo las siguiente operaciones (primero debe llenar el Aarchivo de información):
Nota: cada una de las opciones del programa, debe ser manejada por medio de un Menú. Además de la opción para ingresar por primera vez los datos de los pacientes.