For any sort of serious database you should use an existing database app: the two commonly used open source ones are mysql and postgresql. There are libraries for accessing either of these from C. You will have to decide for your project whether a full fledged database backend is warranted. It could be that using one lets you add new features which would have been difficult to work into your original. It could also be needless complexity
Here are some examples from the postgresql docs for using using its C library:
http://www.hem.net/doc/postgresql-do...ibpq/examples/
and for its C++ library:
http://www.hem.net/doc/postgresql-do...pq++/examples/
freshmeat.net and sourceforge.net both have a ton of open source stuff to look at. The problem is finding what you're looking for, of course.
For learning C, the book called "The C Programming Language" by Kernighan and Ritchie is considered a necessity by a lot of people. I learned on it and have reread it several times. The fact that the entire language is clearly described in a relatively tiny book is a good thing.
For C++, which looks very different than C when well written, I haven't come across a book which seems as good. I read "The C++ Programming Language" by Bjarne Stroustrup (spelling?) and thought it was good, but it's very long. The length is somewhat of an indictment of the language; C++ has way more syntax than C.
Getting yourself indoctrinated into the whole "object oriented" business in preparation for making full use of C++ will take some time. On the other hand, OO thinking helps a lot in writing neat C.
You'll want to get acquainted with development tools on linux if you don't already have favorites.
- Editor: vim or emacs
- Compiler: gcc or g++ for C or C++
- make
- Debugger: gdb or ddd, which is a GUI front end to gdb
- ctags -- works with your editor to jump to definitions of functions or variables
- autotools -- Including automake and autoconf. These help get your program to compile on different *nix platforms without user intervention, as well as enable or disable features at compile time depending on the platform or whim of the user.
hope that was helpful : )