I already know Python and have built a few small games in C++. I'd like to learn C properly and am looking for advice on what to focus on, which exercises or projects are useful, and whether there are any books or other resources worth following.
4 Answers
Kernighan and Ritchie’s C Programming Language is still a useful classic, especially if you work through the exercises instead of just reading it. It explains the reasoning behind the language as well as the syntax. Just remember that it reflects an older version of C, so supplement it with modern references and learn contemporary headers and types such as those in stdint.h.
Try rebuilding a small project you already made in C++, but write it in plain C. A linked list, basic hash table, or another compact data structure is ideal because you’ll have to handle allocation, pointers, and cleanup yourself. The first segmentation fault can be frustrating, but debugging those mistakes is often what makes the concepts stick.
Focus on pointers, memory management, arrays, and structs. Those are the areas that usually require the biggest adjustment when coming from Python or C++. Once you understand how pointers refer to memory and how data is laid out, most of the core language becomes much easier to reason about.
The most effective approach is simply to write C regularly. Pick small problems you actually want to solve and implement them in C instead of only reading tutorials. A practical guide such as Beej’s C programming material can give you structure while you practice.

That makes sense. I think I need to stop treating pointers as mysterious syntax and start thinking about where the data actually lives.