This has become a C discussion, so I'll toss in here. If you have a background in Python (most people who have coded before seem to), I recently stumbled upon http://www.toves.org/books/cpy/. It's light but covers enough to give you directions to study the language further.
I personally would _not_ suggest learning C like many people do with other languages. Most people these days tend to just dive in and code something in a new language, using Stack Overflow or other internet search results to find code snippets that do what they want. This almost unilaterally guarantees buggy, unstable code, with many unhanded edge cases, bad practices, and type casting gotchas. It's solid and well understood languages with countless documentation and support resources; this also means not all resources are created equal. You will really need to know what the code you write is doing (and what it is not doing). "The C Programming Language" is a solid first choice at roughly 300 pages of insight. I would also suggest getting a book on secure C coding best practices. "The CERT C Secure Coding Standard" is my choice but it is a pretty hefty tomb at nearly 750 pages of engineering specifications. For an insight into why C can really mess with you, one of my favourite competitions is the underhanded C competition (http://underhanded-c.org/). This is where people intentionally write code that looks like it does one thing, even to C experts, while in reality it does something completely different. TL;DR If you spend the time to study a few good C books (not blogs or forums) cover to cover and program based on the lessons learned with minimal internet forum support, you'll do just fine.