The first couple chapters in the first book might bore you a bit since you are an experienced programmer, but hang on tight :)
[1]: http://www.amazon.com/Accelerated-C-Practical-Programming-Ex...
[2]: http://www.amazon.com/gp/product/0321334876?ie=UTF8&tag=aris...
http://www.amazon.com/Memory-Programming-Concept-Frantisek-F...
A rather expensive book but stellar reviews. I borrowed it from the library. It's very concise too.
For C++ a lot of people still recommend "Accelerated C++":
http://www.amazon.com/Accelerated-C-Practical-Programming-Ex...
because it teaches you "canonical" C++ instead teaching you "C with classes," which seems to be a common complaint among veteran C++ programmers. It's very readable too.
I'm going to pick up "Writing Great Code":
http://www.amazon.com/Write-Great-Code-Understanding-Machine...
because it explains computer architecture. Once you start programming in C/C++ you are much closer to the metal and having an understanding of the architecture will lead to better choices.
If you do want to go the C++ route, I hear good things about this book: http://www.amazon.com/Accelerated-Practical-Programming-Exam...
Now that I think about it though, if you're still deadset on using C, the Python source code is actually a pretty easy read. You get two benefits for the price of one: you learn C and you get to learn more about the internals of Python. Look here: http://svn.python.org/view/python/trunk/
And, of course, there's the STL, but it's more a reference than a how-to: http://www.sgi.com/tech/stl/