I’ve also felt this way before, but after going through the process of learning many other languages since then, I’ve come to appreciate the relative design purity of C, which I would categorize as a form of simplicity.
Sure, the syntax is terrible. C-style for loops, the comma operator, assignment returning a result, delimiter-less if/else/for/while… these are all awful. Don’t even get me started on that. C was created in the 70s, and we certainly had time to learn from our mistakes since then.
Sure, it is full of pitfalls. Arrays as pointers were a terrible idea in hindsight, pointer arithmetic should not have become a standard tool, and aliasing by default was the single most performance-killing decision ever taken when designing a programming language, in the face of which properly implemented garbage collection is a second-order effect. And yes, there’s all the undefined behaviour too. And the biggest, imo, is manual resource management. Again, we’ve done better since then.
For all these reasons, I would not recommend learning C as a new language without being forced to by external circumstances, or building new programs in C. It’s legacy to me. It has been outperformed in every single of its application domains, and since everything else is ABI-compatible with it, even the fact that a gigantic heap of existing code is written in it is really not a very good excuse.
But when was the last time you saw a language doing so much with integers, floats, null-terminated arrays of bytes, data structures, functions, pointers, and a very stupid preprocessor? To me, this is the incredible thing about C. That its community managed to pick a small, extremely focused set of features, and be creative enough with them that they could build very complex things such as operating systems, GUI toolkits, 3D engines…
I really think there’s a lesson here to be learned for new programming languages, about resisting to the lure of new features before you’ve really taken the time to understand them and you’re sure that you really, positively need them. Better be general, even if it increases the learning complexity, because people only learn the language once and read code written in it many times.