About learning C
If you really want to learn C, [Kernighan and Ritchie "The C Programming Language" book](http://en.wikipedia.org/wiki/The_C_Programming_Language_(book)) is good start.
However nowadays, in my opinion, learning C is just mind exercise -- you can learn a lot important details like, for example:
- Difference between equal operator (
==
) and assignment instruction (=
),
- Expression can have value (i.e.
a = 1
has value 1),
- Pointers arithmetic,
- Direct memory operations (i.e.
memset()
, memcpy()
).
These things are interesting for developers, but most of them is not in use in today mainstream application development (except two first points above).
However if you try to take part in some computer since competitions, C language can be useful.
My recommendation
I would learn C# because it's modern, well designed (in my opinion) object oriented programming language with good, free of charge IDE -- Visual Studio Express Edition, good support (wide community, a lot of source code to study, a lot of tutorials and examples). With C# you can write console application, desktop application or Web Apps, which makes easy to learn by solving wide range of real problems.
Also, on .NET platform there are some other interesting choices -- IronPyton or functional F#.