Hello everyone, I am Shuai Dan.
Many students often tell me that after learning C language, they still don’t know what they can do, feeling as if they haven’t learned anything at all.
I want to say that it seems everyone shares the same confusion.
When I first learned C language, I had the same feeling: what can C language actually do? I felt like it was only useful for solving problems, nothing more.
It was just writing logic, surrounded by code, and when I compiled it, the result appeared in a dark box, lacking any aesthetic appeal.
As I delved deeper into learning, I gradually encountered more and broadened my perspective, and I discovered that C language can actually do quite a lot.
I once came across an interesting saying.
Everyone knows:
One generates two, two generates three, and three generates all things.
In the world of computers, this saying becomes:
Machine code generates assembly, assembly generates C, C generates all things.
The practical applications of C language are indeed numerous. The smart devices and IoT devices that are ubiquitous in our lives, such as cameras, utilize operating systems; the operating systems you use, like Windows and Linux, have their kernels written in C; not to mention nginx and redis; even common high-level languages like Python have their underlying implementations in C.
At this point, you should understand that C language is close to the bottom layer, and many applications are in the invisible background.
Sometimes, the unknown is our gray area, and the best way is to find this direction and joy for yourself.
Here, I recommend some C language projects that you can try out. The more you look at them, the more ideas you will have in your mind.
For example, starting with some very simple ones:
1. Implementing an Address Book/Library Management System in C
Complete a simple address book using C language. This will involve important concepts such as structures, arrays, and linked lists, requiring a certain understanding of C language.
2. Implementing the 2048 Game in C
2048 was a very popular puzzle game before, and this course will use C language to complete a 2048 game.
It is suitable for those with a certain foundation in C language, needing to understand C language and the use of the ncurses graphics library. It will greatly enhance your hands-on ability.
3. Implementing a Simple Calculator in C
This is a simple calculator made with C language, performing addition, subtraction, multiplication, and division operations.
All the mathematical knowledge involved in the program is very simple, but the input process adds complexity. These are all basic elements of C language (input and output), and after learning this, you will be able to write a complete C language program. It is suitable for those learning the basic syntax of C language, as well as input and output. Ideal for beginners.
For example, some excellent projects on GitHub:
1. Tinyhttpd (10.9k+ stars)
A lightweight HTTP server with less than 500 lines of code, which can help understand the principles and essence of server programs.
This is an entry-level project in C language! Write an HTTP server from scratch using C language! It is great for learning and can help us truly understand the essence of server programs.

Link: https://github.com/EZLippi/Tinyhttpd
2. db_tutorial (9.2k+ stars)
Create a simple database from scratch using C.

Link: https://github.com/cstack/db_tutorial
3. myscan (180+ stars)
myscan is a multithreaded program for scanning IP ports, with simple and uncomplicated code, suitable for beginners as a practice learning project.
The command line is as follows:
myscan -p Port1[,Port2,Port3...] [-t Thread](default 10) [-d] (DEBUG) StartIp EndIp
Example:
myscan -p 80 192.168.1.1 192.168.1.254
myscan -p 21,22,23,80,443,8080 -t 256 192.168.1.1 192.168.1.254
Link: https://github.com/nobackdoor/myscan
4. DungeonRush (1.9k+ stars)
A vibrant snake game, this project innovates on the traditional snake game, making it very suitable for C language beginners.
Through this project, you can write a fun game, gaining both practice and a sense of achievement.

Link: https://github.com/rapiz1/DungeonRush
5. acwj (9.7k+ stars)
A practical tutorial on writing a C language compiler.
The tutorial focuses on practical step-by-step guidance on how to write a C language compiler that can compile itself (bootstrapping) and run on real hardware.

Link: https://github.com/DoctorWkt/acwj
6. smartdns (7.6k+ stars)
A local DNS server that can improve network access speed and has many other benefits.
The architecture diagram is as follows:

Link: https://github.com/pymumu/smartdns
The content is already here, everything is ready, I have mentioned what you can do, and the rest is for you to try.
Recommended reading 👍: Original 220-page “Dynamic Programming Mastery: From Beginner to Practical” high-definition eBook is now available for download!
Recommended reading 👍: Exhaustively compiled 360-page “Binary Tree Mastery: From Beginner to Practical” high-definition eBook is now available for download!
– End –
Hello, I am Dan Dan. I graduated from an unknown second-tier university, a silver medalist in the ACM Asia Regional Contest, and won a gold medal in the provincial competition with fourth place. Later, I went to a top three software engineering 985 university for my master’s degree.
I dislike complex environments, and I currently work in a company doing data analysis, with simple relationships, and I am a responsible person managing a team of over ten people.
I enjoy sharing and have written many articles. I adhere to the belief that “sharing is a positive attitude towards life,” click on the menu bar “Learn about me”.
I hope to become friends with you, even if we have never met.