Ik moet voor een schoolopdracht een systeem maken dat de tijd dat een werknemer werkt registreert. Nu wil ik die tijden in een bestand opslaan maar hij doet niet wat ik wil ^^.
Iedere keer dat ik deze code uitvoer voegt hij de laatste in de lijst nóg een keer toe.
Dus als het eerst was:
Dan word het daarna:
Ik kan alleen niet vinden waar ik dan die laatste dubbel inlees of wegschrijf..
Als iemand dit wel kan vinden ^^?
Alvast bedankt!
Code:
#include <iostream>
#include <fstream>
#include <list>
#include <string>
struct entry {
char name[25];
double hours;
};
std::list<entry> readDatabase();
void writeDatabase(std::list<entry> list);
int main() {
std::cout << "Reading in database..." << std::endl;
std::list<entry> list = readDatabase();
std::cout << "In database:" << std::endl;
for (std::list<entry>::const_iterator i = list.begin(); i != list.end(); ++i) {
std::cout << (*i).name << ": " << (*i).hours << std::endl;
}
std::cout << "Writing to database..." << std::endl;
writeDatabase(list);
std::cout << "Done." << std::endl;
std::cin.get();
return 0;
}
std::list<entry> readDatabase() {
std::ifstream database("database.dbf", std::ios::binary);
std::list<entry> list;
if (database) {
while (!database.eof()) {
entry e;
database.read(reinterpret_cast<char*>(&e), sizeof(e));
list.push_back(e);
}
}
return list;
}
void writeDatabase(std::list<entry> list) {
std::ofstream database("database.dbf", std::ios::binary | std::ios::trunc);
for (std::list<entry>::iterator i = list.begin(); i != list.end(); ++i) {
database.write(reinterpret_cast<char*>(&(*i)), sizeof(*i));
}
}
Iedere keer dat ik deze code uitvoer voegt hij de laatste in de lijst nóg een keer toe.
Dus als het eerst was:
Arjan Broos: 80
Luuk van Wezel: 80
Piet Puk: 40
Dan word het daarna:
Arjan Broos: 80
Luuk van Wezel: 80
Piet Puk: 40
Piet Puk: 40
Ik kan alleen niet vinden waar ik dan die laatste dubbel inlees of wegschrijf..
Als iemand dit wel kan vinden ^^?
Alvast bedankt!