This entry contains much of the same material as Things you should’ve learned in ‘C’ class: 0 – Introduction - but aimed at those who have not (yet) taken a ‘C’ class.
Many people seem to adopt the jump-in-at-the-deep-end-and-hope-you-learn-to-swim-before-you-drown approach to start developing in ‘C’.
While it is, of course, possible to learn a programming language by yourself, it requires a good deal of disciplined study and practice to learn it well. Therefore I thoroughly recommend a taught class as the best way to go.
I can recommend the following local training providers:
Other providers are, of course, available; eg,
And some offer “self-study” options; eg,
If you do intend to go ahead with a DIY approach, the first thing you will need is a good textbook – or textbooks. ‘C’ is a very long-established and widely-used language – so there are plenty to choose from!
Some general books are listed here: http://www.keil.com/books/genbooks.asp
The Association of C & C++ Users (ACCU) website has a section dedicated to book reviews: http://accu.org/index.php/accu_documents/book_reviews
A free online ‘C’ textbook can be found here: http://publications.gbdirect.co.uk/c_book/
A complete set of ‘C’ programming course notes is available here: http://www.eskimo.com/~scs/cclass
Answers to a range of Frequently-Asked Questions about ‘C’ programming can be found here: http://c-faq.com/
A description of all the functions provided by the standard ‘C’ library can be found here: http://www.cplusplus.com/reference/clibrary/
Addendum – 1 May 2012:
I stumbled upon this this great list of ‘C’ books, tutorials, FAQs, etc:
Although it starts with some AVR-specific stuff, the vast majority is entirely general.