Advertisement
avr39-ripe

binaryFileBasik

May 4th, 2020
1,625
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. struct Player
  5. {
  6.     int id = 0;
  7.     char* name;
  8.     int rank;
  9. };
  10.  
  11. int main()
  12. {
  13.  
  14.     Player players[3]{ {11112607, new char[sizeof("MadMax")]{"MadMax"}, 398888},{11112802, new char[sizeof("Batman")]{"Batman"}, 258888},{11112902, new char[sizeof("Joker")]{"Joker"}, 158888} };
  15.  
  16.     std::ofstream outf;
  17.     outf.open("file.dat", std::ios::binary);
  18.     for (int i = 0; i < 3; i++)
  19.     {
  20.         outf.write((char*)&players[i].id, sizeof(int));
  21.         outf.write(players[i].name, strlen(players[i].name) + 1);
  22.         outf.write((char*)&players[i].rank, sizeof(int));
  23.     }
  24.     outf.close();
  25.     for (int i = 0; i < 3; i++) { delete[] players[i].name; };
  26.  
  27.     Player readPlayers[3]{};
  28.     std::ifstream inf;
  29.     inf.open("file.dat", std::ios::binary);
  30.     char buf[100];
  31.     for (int i = 0; i < 3; i++)
  32.     {
  33.         inf.read((char*)&readPlayers[i].id, sizeof(int));
  34.         for (int i = 0; inf.read(buf + i, 1), buf[i] and i < 100; i++);
  35.         int strSize = strlen(buf) + 1;
  36.         readPlayers[i].name = new char[strSize];
  37.         strcpy_s(readPlayers[i].name, strSize, buf);
  38.         inf.read((char*)&readPlayers[i].rank, sizeof(int));
  39.     }
  40.     inf.close();
  41.  
  42.  
  43.     for (int i = 0; i < 3; i++)
  44.     {
  45.         std::cout << readPlayers[i].id << ' ' << readPlayers[i].name << ' ' << readPlayers[i].rank << '\n';
  46.     }
  47.     for (int i = 0; i < 3; i++) { delete[] readPlayers[i].name; };
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement