Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- struct Player
- {
- int id = 0;
- char* name;
- int rank;
- };
- void writePlayersFile(Player* playersArr, int playersSize, int append = 0)
- {
- std::ofstream outf;
- outf.open("file.dat", std::ios::binary | append ? std::ios::app : 0);
- for (int i = 0; i < playersSize; i++)
- {
- outf.write((char*)& playersArr[i].id, sizeof(int));
- size_t nameLen = strlen(playersArr[i].name) + 1;
- outf.write(playersArr[i].name, nameLen);
- if (nameLen < 50) { outf.seekp(50 - nameLen, std::ios::cur); };
- outf.write((char*)& playersArr[i].rank, sizeof(int));
- }
- outf.close();
- }
- void readPlayersFile(Player* playersArr, int playersSize)
- {
- std::ifstream inf;
- inf.open("file.dat", std::ios::binary);
- char buf[100];
- for (int i = 0; i < playersSize; i++)
- {
- inf.read((char*)& playersArr[i].id, sizeof(int));
- for (int i = 0; inf.read(buf + i, 1), buf[i] and i < 100; i++);
- int nameLen = strlen(buf) + 1;
- playersArr[i].name = new char[nameLen];
- strcpy(playersArr[i].name, buf);
- if (nameLen < 50) { inf.seekg(50 - nameLen, std::ios::cur); };
- inf.read((char*)& playersArr[i].rank, sizeof(int));
- }
- inf.close();
- }
- int changePlayersFileById(int searchId, const char* name)
- {
- std::fstream file;
- file.open("file.dat", std::ios::in | std::ios::out | std::ios::binary);
- int id = 0;
- int nameLen = 0;
- for (int i = 0; i < 3; i++)
- {
- file.read((char*)&id, sizeof(id));
- if (id == searchId)
- {
- nameLen = strlen(name) + 1;
- file.seekp((int)file.tellg(), std::ios::beg);
- file.write(name, nameLen);
- file.close();
- return 0;
- }
- file.seekg(50 + 4, std::ios::cur);
- }
- file.close();
- return 1;
- }
- void printPlayersArr(Player* playersArr, int playersSize)
- {
- for (int i = 0; i < playersSize; i++)
- {
- std::cout << playersArr[i].id << ' ' << playersArr[i].name << ' ' << playersArr[i].rank << '\n';
- }
- }
- int main()
- {
- Player players[3]{ {2607, new char[sizeof("MadMax")]{"MadMax"}, 39},{2802, new char[sizeof("Batman")]{"Batman"}, 25},{2902, new char[sizeof("Joker")]{"Joker"}, 15} };
- writePlayersFile(players, 3);
- for (int i = 0; i < 3; i++) { delete[] players[i].name; };
- Player readPlayers[3]{};
- readPlayersFile(readPlayers, 3);
- printPlayersArr(readPlayers, 3);
- for (int i = 0; i < 3; i++) { delete[] readPlayers[i].name; };
- changePlayersFileById(2802, "BATMAN FOREVER YOUNG!");
- changePlayersFileById(2902, "Joker Rockker :]");
- readPlayersFile(readPlayers, 3);
- printPlayersArr(readPlayers, 3);
- for (int i = 0; i < 3; i++) { delete[] readPlayers[i].name; };
- }
Add Comment
Please, Sign In to add comment