rolf wrote(it doesn't mean that it's the perfect language though, it just turned into some sort of standard)
You are right, C is not a perfect language, but there is a reason why it has become a standard.
* Historically, it was the first mainstream language to give high-level abstraction layers.
* It still provides access to low-level functions for optimization.
* It is a compiled language which gives it a huge performance boost compared to other interpreted languages.
* It has an almost infinte set of libraries that allow to do virtually anything.
However, like you said it's far from perfect and here are (in my opinion) its main flaws:
* Difficult to read, write, learn, understand, ... When you are not struggling with the syntax of the language you are optimizing your manual freeing of memory.
* Compiled binaries, so forget about portability.
* The gain in performance is sometimes (most of the times) superceded by the loss in productivity.
* Modern computers do not require C low-level optimization, except for heacy CPU-demanding applications.
* Bad handling of arrays and strings.
* Strict typing. That's old school.
* No dynamic arrays (don't mention linked lists or stacks ...).
I used C exclusively during my first two years of programming. Learning Java after that was a great relief. I remember loving the way Strings, Vectors and general Arrays are handled.
I understand you having troubles to learn C. However I think you'd have much less troubles learning Java, Python or even C# (ARRRRGH!!) for general purpouse programming.