Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <functional>
- #include <conio.h>
- #include <string>
- #include <filesystem>
- #include <fstream>
- #include <cstring>
- using namespace std;
- struct Personales
- {
- char nombre[50];
- char apellido[50];
- int edad;
- };
- bool verificarArchivo(string archivoNombre)
- {
- fstream archivo;
- archivo.open("..\\output\\" + archivoNombre, ios::out);
- // ruta relativa del archivo para windows --
- // ios::app verifica si existe ya el archivo sino lo crea ademas de escribir en el ultimo punto.
- if (!archivo)
- {
- cout << "No se puede abrir el archivo";
- exit(EXIT_FAILURE);
- return false;
- }
- archivo.flush();
- archivo.close();
- return true;
- }
- void escribirArchivo(Personales per[],string archivoNombre, bool verificar)
- {
- if (verificar)
- {
- fstream archivo;
- archivo.open("..\\output\\" + archivoNombre, ios::out | ios::binary);
- // ruta relativa del archivo para windows --
- /*ios::binary*/
- if (!archivo)
- {
- cout << "No se puede abrir el archivo";
- exit(EXIT_FAILURE);
- }
- int i = 0;
- while (i < 3) {
- archivo.write(reinterpret_cast<char *>(&per[i]), sizeof(Personales));
- i++;
- }
- archivo.flush();
- archivo.close();
- }
- }
- void llenarStruct(Personales per[],int cantidad, bool verificar, string archivoNombre)
- {
- char pal[50];
- for (int i = 0; i < cantidad; i++)
- {
- cout << "Ingrese el Nombre: ";
- //cin >> pal;
- cin>>per[i].nombre;
- //strcpy(per[i].nombre, pal);
- cout << "Ingrese el Apellido: ";
- cin >> pal;
- strcpy(per[i].apellido, pal);
- cout << "Ingrese la edad: ";
- cin >> per[i].edad;
- }
- escribirArchivo(per,archivoNombre, verificar);
- }
- int leerArchivo(string archivoNombre, int cantidad)
- {
- Personales2 per;
- Personales person[cantidad];
- string linea;
- ifstream archivo;
- int posicion = 0;
- int tamaƱo = sizeof(Personales);
- archivo.open("..\\output\\" + archivoNombre,ios::out | ios::binary);
- if (!archivo)
- {
- cout << "No se puede abrir el archivo";
- exit(EXIT_FAILURE);
- }
- int i = 0;
- archivo.seekg(0, ios::beg);//el error es la posicion hay que leer desde el principio no el final. osea 0 de N (0/n) no n/0
- while (i < cantidad) {
- archivo.read(reinterpret_cast<char *>(&person[i]), sizeof(Personales));
- i++;
- }
- archivo.close();
- i = 0;
- while (i <= cantidad)
- {
- cout << "Datos en la posicion: " << i+1<< endl;
- cout << "Nombre: ";
- cout << person[i].nombre <<endl;
- cout << "Apellido: ";
- cout << person[i].apellido <<endl;
- cout << "Edad: ";
- cout << person[i].edad <<endl;
- i = i+2;
- }
- }
- int main()
- {
- string archivo;
- int cantidad = 3;
- Personales per[cantidad];
- archivo = "Archivo.bin";
- bool verificar = verificarArchivo(archivo);
- llenarStruct(per, cantidad, verificar, archivo);
- leerArchivo(archivo, cantidad);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement