avr39-ripe

binaryFileIOBasic

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