The best way to learn to program right from scratch is to go to a decent school. But that would just be my opinion since I don't share the common hatred people have against their technological and computer science staffs, I've never had any issues with them.
You can start by getting GNU C Compiler for Windows (MinGW binaries) and for Linux (GCC binaries).
Use any editor for typing your programs (Notepad++ for Windows and/or Kate for Linux as good examples) and compile your programs with:
Code:
gcc filename.c -o outputfilename.exe
Then execute it as per will.
For books, I suggest you take a look at the various other "learn" threads in this section. Its varied, so I cant point you to one good one but ultimately you have to read
K&R, its your "Kapda and Roti" for C. Also called as the White book. Its by Brian
Kerringhan and Dennis
Ritchie and is available for very cheap in the markets.
Alternatively if you want an integrated development editor, you can opt for Dev-C++ for GCC compilers or get Visual Studio 2008 Express for Windows-only programming.