# HG changeset patch # User Markus Bröker # Date 1241973890 -7200 # Node ID d494813f9e5bf3552770783d033a86c1a7c0ace6 # Parent 66f0244c28633c364f7d8fbf4e4950566e38e94f cppdatabase added cppdatabase stores data in a file and retrieves it back committer: Markus Bröker diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -66,6 +66,7 @@ TARGET += daemon TARGET += numbers TARGET += nearest +TARGET += cppdatabase .SUFFIXES: .c .cc .asm @@ -317,6 +318,10 @@ @echo Linking $<... @$(CPP) -Wall -O2 -g -ggdb $< -o $@ +cppdatabase: cppdatabase.o + @echo Linking $<... + @$(CPP) -Wall -O2 -g -ggdb $< -o $@ + .PHONY: beauty clean uninstall clean: diff --git a/cppdatabase.cc b/cppdatabase.cc new file mode 100644 --- /dev/null +++ b/cppdatabase.cc @@ -0,0 +1,77 @@ +/** + * cppdatabase.cc + * Copyright (C) 2009 Markus Broeker + * + * stores data in a file and retrieves it back + */ + +#include +#include +#include + +#define DB_FILE "/tmp/test.dat" + +struct Person { + char lastname[80]; + char firstname[80]; + char position[80]; +}; + +void make_db_entry (std::ofstream& out, struct Person& p) +{ + out.write ((char *)&p, sizeof (Person)); +} + +void read_db_entry (std::ifstream& in) +{ + std::cout << "clear eof" << std::endl; + in.clear (); + std::cout << "seek status: " << in.seekg (0, std::ios::beg) << + std::endl << std::endl; + + struct Person p; + + while ((in.read ((char *)&p, sizeof (Person))) != NULL) { + std::cout << p.lastname << ", " << p.firstname << ", " << + p.position << std::endl; + } +} + +using namespace std; + +int main () +{ + struct Person p[] = { + {"Ribery", "Franck", "Midfielder"}, + {"Lahm", "Phillip", "Defender"}, + {"Toni", "Luca", "Striker"}, + {"Klose", "Miroslav", "Striker"}, + }; + + ifstream in; + ofstream out; + + out.open (DB_FILE, ios::binary); + if (!out) { + cout << "Outputfile Error " << DB_FILE << endl; + return EXIT_FAILURE; + } + + for (unsigned int i = 0; i < sizeof (p) / sizeof (Person); i++) { + make_db_entry (out, p[i]); + } + out.close (); + + in.open (DB_FILE); + if (!in) { + cout << "Inputfile Error " << DB_FILE << endl; + return EXIT_FAILURE; + } + + read_db_entry (in); + read_db_entry (in); + + in.close (); + + return EXIT_SUCCESS; +}