Personally, I found the best way was on a Linux system with two books: the Deitels' C: How to program which is a book about programming that happens to use C, and Matthew & Stone's Beginning Linux Programming which is a terrible book about programming but a very good book about programming in the linux environment, from command line utilities to KDE.
I'm assuming, of course, that you don't have a lot of programming experience. I like the Deitel book because it balances discussion of C syntax and good practice with discussion of thins like linked lists and binary trees, and when/why you should use them. Also, the exercises are varied and interesting.
The Linux book, by contrast, introduces the environment and popular Linux libraries very well, but inexplicably assumes that your primary goal in life is to implement an inventory control system, which is about the last thing I'd use C for.