"Learn C The Hard Way" is dreadful. I would suggest The books:
- -- The C Programming Language (K&R) ("The Bible")
- -- C Primer Plus
Because there are not many great resources out there for learning C (especially for beginners), I have started a new series called
Intro to C. It's a video series that teaches
everything about C for complete beginners. If you are not a beginner, I would suggest just reading some books.
In C, the most difficult thing to learn in my opinion is pointers. I remember when I was learning C years ago, the concept of pointers took over a week for me to actually understand.
The other difficult thing is if you are coming from C# is unlearning OOP. C is mainly a procedural language. In my opinion, most implementations OOP are dreadful and actually hinder "code reuse" (from experience). The only language that I have personally used that uses a kind of uses OOP that I "like" is Go (even then, most people say it isn't even a "true" OO language but that's mainly people it doesn't do encapsulation at a local level and "true" inheritance, etc.). In most of my Go code at work, I think I have written 5 methods (hundreds of standalone functions though). That's it. In Go, the OO way is only useful certain things such as file systems.