I think well-intended people make the C learning process more complicated than it really needs to be. The first mistake they make is recommending The C Programming Language, which is an excellent resource for learning the ins and outs of C, but a terrible resource for getting started with C. The second mistake they make is taking for granted certain knowledge about compliled and low-level languages that the learner may not have access to if their first language was something like Python.

If you’re looking to get started with C, I would recommend the following approach:

Learn the basic syntax using an online platform

The first step is simply getting a chance to play around with the syntax. Skip environment setup, skip compiling, just play with the syntax and see its output. For this, I recommend learn-c.org. It has short tutorials with in-broswer exercises that allow for a fast, rewarding feedback loop.

Start with the material under Learn the Basics. Don’t just solve the prompt for each section. Play around with the code a bit to explore the ideas you’ve learned.

Learn pointers

At some point during the exercises you will come up against pointers. If you’ve new to concept, Learn-C won’t be enough to get a strong feel for them. Luckily there’s an excellent YouTube playlist by mycodeschool that covers everything you need to know.

Level up to more complex problems

Once you’ve completed Learn the Basics on Learn-C and you have a good feel for pointers, you’re probably better off moving to a new platform. I recommend Exercism’s C coding exercises to get a little more practice thinking in C. It’s a great web-based learning platform that has options for things like code review (though be warned that these can take quite a while to receive).

Watch this series of C tutorials and/or get The C Programming Language

By now you can write basic C, and that’s about it. You’ll need additional resources to improve your familiarity with the language while you’re working on the Exercism problems. You’ll also want to start writing C on your own machine at some point too.

If you’re book-oriented, this is where I would buy The C Programming Langauge.

I would also highly recommend this YouTube playlist by Caleb Curry. It’s comprehensive, digestible, and structured to be beginner friendly.

Explore on your own

Once you’ve finished the above, you should be well on your way. It’s choose your own adventure from here.