C语言必练项目集合

C语言必练项目集合

↓↓↓程序员必备资料全在这里,我给大家都准备好了,免费领取无套路,每天更新↓↓↓

当年在自学转行的时候,学习C语言也是一件很快乐的事,因为这是我人生中学习的第一门编程语言。

以我当年的经验,学习任何一门编程语言,无非就是:多看视频、多看书、多写代码。其中,最重要的就是要多写代码,否则看再多书或视频都没用。

给大家推荐 10 个适合大一同学做的 C 语言项目集合! 这几个小项目的代码量都不是很大,特别适合新手入门!

一、C 语言实现 Flappy Bird 游戏

Flappy Bird 是之前十分热门的小游戏,后来出现多个衍生版本。本节课程将使用 C 语言来实现一个字符版 Flappy Bird,感受不一样的风采。本课程学习后将会熟悉C语言,以及绘图库ncurses的使用。本课程适合有C语言基础,想做练手项目的同学,可以有效的学习ncurses绘图库的使用,做一些有趣的事情。

二、C 语言实现简单聊天室

本项目在 Linux 环境下使用 C 语言实现聊天室软件,学习并实践基本的 Linux socket 通信的相关技术,加深对 TCP/IP 协议栈的理解。

三、C 语言实现打字练习软件

在本课程中,我们将会制作各种各样的键盘打字练习软件,本实验所编写的程序都比较简单,但它们能加深你对计算机应用程序的理解。

四、C 语言实现简单计算器

本课程用C语言做一个简单的计算器,进行加、减、乘、除操作。本程序涉及的所有数学知识都很简单,但输入过程会增加复杂性。都是C语言很基础的东西(输入输出),学了之后能写出一个完整的C语言程序。适合涉及C语言的基本语法,与输入与输出。适合初学者学习。

五、C 语言实现自己的编程语言

本实验中你将在学习 C 语言的同时学会编写你自己的编程语言,一个 1000 行左右代码的简单 Lisp ,通过本实验的学习,提高自己的编程能力。本课程翻译制作自著名的BuildYourOwnLisp教程。

六、C 语言实现支持 PHP 的简易 Web 服务器

本课程分为两个实验。实验一用C语言实现一个简易的WEB服务器。实验二加入了能支持动态解析PHP程序的功能。主要涉及到的技术有:Linux Socket编程,HTTP协议(只实现GET请求),Fast-CGI协议。本课程适合有C语言基础的同学学习,讲解了最基本的web服务器工作流程,学习后熟悉建立套接字等操作流程。深入解释接口协议,让同学明白一个web服务器是怎么解析动态语言的。

七、C 语言实现通讯录

本次课程将使用 C 语言完成一个简单的通讯录。会涉及到结构体、数组、链表等重要概念。因此,您需要对 C 语言有一定的了解。

八、C 语言实现贪吃蛇游戏

本课程我们将在Linux平台使用C语言编程,在终端界面上玩贪吃蛇。本课程分为三个实验,实验一介绍了图像库,实验二绘制游戏图像界面,实验三实现贪吃蛇。逐步为同学们讲解一个游戏的制作过程。

九、C 语言实现 Linux ls 命令

本课程学习 linux 目录与文件属性,使用C语言实现 Linux ls 命令。其中涉及到 ls 的原理,如何获取获取文件的属性,掩码的相关知识。认识linux系统函数opendir(),readdir()等的调用方法。

十、C 语言实现大数计算器

本课程将通过C语言实现一个简易计算器,用于解决任意长度的有符号整数的加、减、乘、除运算。主要将涉及到利用全新的数据结构来表示大数,并将新数据结构存储的大数转化为字符用于显示。以及基于大数新的数据结构完成加、减、乘、除的计算算法设计。

这10个项目,好好学习一遍,认真敲一遍代码,对 C 语言的提高有很大的帮助。

另外,网络上还有10个非常著名的开源项目,要是能够每个都做出来,不仅学好了C语言,也学会了Linux应用编程,已经达到中级水平了。

另外,光学会写C语言是不够的,想进大厂的同学,一定要好好学算法,这是面试必备的。这里准备了一份 BAT 大佬总结的 LeetCode 刷题宝典,很多人靠它们进了大厂。

- 1. Webbench

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。

下载链接:home.tiscali.cz/~cz2105

- 2. Tinyhttpd

tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。

下载链接:sourceforge.net/project

- 3. cJSON

cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。

cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。

项目主页:sourceforge.net/project

- 4. CMockery

cmockery是google发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。cmockery的源代码行数不到3K,你阅读一下will_return和mock的源代码就一目了然了。

主要特点:

  • 免费且开源,google提供技术支持;
  • 轻量级的框架,使测试更加快速简单;
  • 避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好;
  • 并不强制要求待测代码必须依赖C99标准,这一特性对许多嵌入式系统的开发很有用

下载链接:code.google.com/p/cmock

- 5. Libev

libev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。

下载链接:software.schmorp.de/pkg

- 6. Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态数据库驱动网站的速度。Memcached 基于一个存储键/值对的 hashmap。Memcached-1.4.7的代码量还是可以接受的,只有10K行左右。

下载地址:memcached.org/

- 7. Lua

Lua很棒,Lua是巴西人发明的,这些都令我不爽,但是还不至于脸红,最多眼红。

让我脸红的是Lua的源代码,百分之一百的ANSI C,一点都不掺杂。在任何支持ANSI C编译器的平台上都可以轻松编译通过。我试过,真是一点废话都没有。Lua的代码数量足够小,5.1.4仅仅1.5W行,去掉空白行和注释估计能到1W行。

下载地址:lua.org/

- 8. SQLite

SQLite是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。足够小,大致3万行C代码,250K。

下载地址:sqlite.org/

- 9. UNIX v6

UNIX V6 的内核源代码包括设备驱动程序在内 约有1 万行,这个数量的源代码,初学者是能够充分理解的。有一种说法是一个人所能理解的代码量上限为1 万行,UNIX V6的内核源代码从数量上看正好在这个范围之内。看到这里,大家是不是也有“如果只有1万行的话没准儿我也能学会”的想法呢?

另一方面,最近的操作系统,例如Linux 最新版的内核源代码据说超过了1000 万行。就算不是初学者,想完全理解全部代码基本上也是不可能的。

下载地址:minnie.tuhs.org/cgi-bin

- 10. NETBSD

NetBSD是一个免费的,具有高度移植性的 UNIX-like 操作系统,是现行可移植平台最多的操作系统,可以在许多平台上执行,从 64bit alpha 服务器到手持设备和嵌入式设备。NetBSD计划的口号是:”Of course it runs NetBSD”。它设计简洁,代码规范,拥有众多先进特性,使得它在业界和学术界广受好评。由于简洁的设计和先进的特征,使得它在生产和研究方面,都有卓越的表现,而且它也有受使用者支持的完整的源代码。许多程序都可以很容易地通过NetBSD Packages Collection获得。

下载地址:netbsd.org/


另外,想进大厂的同学,一定要好好学算法,这是面试必备的。这里准备了一份 BAT 大佬总结的 LeetCode 刷题宝典,很多人靠它们进了大厂。

附:近期高赞回答

Linux的功能有多强大?
学习Linux有没有比《鸟哥的Linux私房菜》更好的书?
有没有学习Linux比较好的入门书籍?

码字不易,硬核码字更难,希望大家不要吝啬自己的鼓励。我是:

@程序员良许

欢迎关注我!

我的个人网站,满满的都是Linux干货:良许Linux教程网

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

编辑于 2021-04-24 10:38