当前位置: 华文星空 > 知识

有哪些小的 C 语言项目(大概几千行)适合个人开发?

2012-10-31知识

----插入一条更新---

经常在私信里看到有小伙伴问我学习完 C/C++或Java、数据机构与算法 等后可以去哪里 练手 做项目

其实网上有很多类似的开源题库可以供你联系,今天就 良心推荐一个 计算机学习网站 ,可能是我用过 最好的计算机学习网站 ,可以 刷算法、C/C++、Java、硬件、前端 等,还有 大厂面经、面试真题 等。

下面是一些我用过的其中一些比较好的 在线题库

  • C语言练习题库
  • C++练习题库
  • 算法-面试必刷101
  • 计算机基础必备基础知识练习
  • 现在是免费注册的,据我所知后面注册可能要收费了,如果你有类似的需要我建议你现在注册一个,正所谓: 不白嫖就是亏 !!!嘎嘎嘎!

    首先给大家推荐一个 C语言/C++学习平台 ,这可能是你见过的最好的C/C++学习仓库!

    C语言/C入门、学习路线、电子书籍推荐与下载、视频推荐、小项目、干货文章、笔试面试、C语言/C++ 规范、开源项目

    秉着好东西不藏私的原则分享出来,如果对你有用可以 点赞支持一下我

    对了,简单介绍一下自己,我是 飞宇 本硕均于某中流985 CS就读,以前是在百度搜索部门做后端研发实习生,后来又去了字节某电商部门担任后端研发工程师。

    虽然是所谓的科班出生,但学校教育质量就不提了。。。懂得都懂,所以我学习计算机基本全靠自学,B站、github、网易云课堂、YouTube等就是我的学习课堂

    欢迎关注我 @韩飞宇 ! 我会继续分享一些计算机学习经验、一些不错的编程资源以及自己在互联网一二线公司工作的工作体验和日常生活等。

    这是一份涵盖大部分 C++ 程序员所需要掌握的知识。入门、进阶、深入、校招、社招,准备 C++学习 & 面试,首选 CppGuide

    可能是你见过的最好的C/C++学习仓库

    目前已经开源在了github上,如果你因为 网络等原因无法访问github,我在国内的码云也放了一份 ,同样可以供你学习C/C++!

    github开源地址 :https:// github.com/GrindGold/Cp pGuide

    码云开源地址 :https:// gitee.com/grindgold/Cpp Guide

    1 The Algorithms - C

    C语言实现各种算法,同时也可以学习下算法!

    项目地址:https:// github.com/TheAlgorithm s/C#the-algorithms---c--mainpage

    2 libhv

    libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了更简单的接口和更丰富的协议。详细介绍见项目README

    精妙小巧跨平台,简单实用易上手

  • base封装了很多跨平台的代码,如hatomic原子操作、hthread线程、hmutex线程同步,当然这都是基于configure/cmake自动生成的hconfig.h和hplatform.h两个头文件中提供的平台宏、编译器宏等实现的;
  • event模块则实现了事件循环(包括IO、timer、idle),不同的平台有不同的实现,如Linux使用epoll,Windows使用IOCP、Mac使用kqueue、Solaris使用evport,感兴趣的可以读一读event下的源码;
  • http模块则基于event模块实现了本世纪最为通用的应用层协议http协议,包括http服务端和客户端,libhv中examples下提供的httpd,性能可媲美nginx服务;
  • libhv是c++编写HTTP API服务端/客户端最简单的库,没有之一
  • 项目地址:https:// github.com/ithewei/libh v.git

    秉着好东西不藏私的原则分享出来!我把自己学习计算机八九年以来的书籍分享出来了,最后汇总开源成为一个计算机经典编程书籍仓库了。

    我学习计算机以来自己收藏的计算机电子书

    如果对你有用可以点赞支持一下我!后续会继续分享一些计算机学习的编程资源!

    其中包括经典大黑书、编程电子书、电子书、编程书籍,包括计算机基础、C/C++、Java、Python、面试题、架构设计、算法系列等经典电子书。

    目前已经开源在了github上,如果你因为 网络等原因无法访问github,我在码云也放了一份 ,同样可以供你学习编程!

    github开源地址 :https:// github.com/GrindGold/pd f

    码云开源地址 :https:// gitee.com/grindgold/pdf

    3 C语言入门项目

    包括C语言迷宫、24点游戏、奔跑的火柴人、超市管理系统、打字母、电子时钟、对对碰、俄罗斯方块、黑白棋、华容道、火车票订票管理源码、连连看、商品销售系统、象棋、超级玛丽、图书管理系统、学生成绩管理系统.......

    4 tmux

    tmux是一个终端多路复用器:它允许从单个屏幕创建、访问和控制多个终端。tmux可以从屏幕上分离并在后台继续运行,然后重新连接。

    项目地址:https:// github.com/tmux/tmux

    5 C语言PAT练习

    PAT习题 C语言题解。全部用C语言写,追求代码高效简洁。

    项目地址:GitHub - OliverLew/PAT

    6 Learn-Algorithms

    项目主要是 C语言实现算法相关的学习笔记,包括各类知识点,链表、队列、哈希表等等

    项目地址:https:// github.com/nonstriater/ Learn-Algorithms

    7 Sqlite

    SQLite是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。
  • 项目地址:SQLite Home Page

    8 EasyLogger

    一款轻量级且高性能的日志库,作者armink,EasyLogger 是一款超轻量级、高性能的 C/C++ 日志库,非常适合对资源敏感的软件项目,相比之下, EasyLogger 的功能更加简单,提供给用户的接口更少,上手会更快,更多实用功能支持以插件形式进行动态扩展。

    目前EasyLogger支持以下功能:

  • 日志输出方式支持串口、Flash、文件等;
  • 日志内容可包含级别、时间戳、线程信息、进程信息等;
  • 支持多种操作系统,支持裸机;
  • 各级别日志支持不同颜色显示;
  • 项目地址:https:// gitee.com/Armink/EasyLo gger

    9 struct2json

    struct2json 是一个开源的C结构体与 JSON 快速互转库,它可以快速实现 结构体对象 与 JSON 对象 之间序列化及反序列化要求。快速、简洁的 API 设计,大大降低直接使用 JSON 解析库来实现此类功能的代码复杂度。

    起源

    把面向对象设计应用到C语言中,是当下很流行的设计思想。由于C语言中没有类,所以一般使用结构体struct充当类,那么结构体变量就是对象。有了对象之后,很多时候需要考虑对象的序列化及反序列化问题。C语言不像很多高级语言拥有反射等机制,使得对象序列化及反序列化被原生的支持。

    对于C语言来说,序列化为 JSON 字符串是个不错的选择,所以就得使用 cJSON 这类 JSON 解析库,但是使用后的代码冗余且逻辑性差,所以萌生对cJSON库进行二次封装,实现一个 struct 与 JSON 之间快速互转的库。 struct2json就诞生于此。下面是 struct2json 主要使用场景:

  • 持久化 :结构体对象序列化为 JSON 对象后,可直接保存至文件、Flash,实现对结构体对象的掉电存储;
  • 通信 :高级语言对JSON支持的很友好,例如: Javascript、Groovy 就对 JSON 具有原生的支持,所以 JSON 也可作为C语言与其他语言软件之间的通信协议格式及对象传递格式;
  • 可视化 :序列化为 JSON 后的对象,可以更加直观的展示到控制台或者 UI 上,可用于产品调试、产品二次开发等场景;
  • 项目地址:https:// gitee.com/Armink/struct 2json

    10 TencentOS-tiny

    encentOS tiny的内核确实是非常非常小巧,最少资源占用为RAM 0.6KB,ROM 1.8 KB。这是他们团队自主研发的RTOS,源码非常简单易懂,源码作者以非常清晰的逻辑实现了整个内核。

    TencentOS tiny主要由一个轻量级RTOS内核+多个物联网组件构成,,从下到上主要包括:

    CPU库 :TencentOS tiny支持的CPU IP核架构,当前主要支持ARM Cortex M0/3/4/7,还有现在很火的RISC-V,当然,腾讯物联网团队肯定也会支持更多种类更多IP核与开发板。

    驱动管理层 :包括BSP板级支持包,这些东西主要由MCU芯片厂家开发与维护,、HAL硬件抽象、Drivers设备驱动,这部分对于纯粹嵌入式开发者来说还是很重要的,肯定会越来越完善的!

    内核 :TencentOS tiny实时内核包括任务管理、实时调度、时间管理、中断管理、内存管理、异常处理、软件定时器、链表、消息队列、信号量、互斥锁、事件标志等模块,接下来我也将写一系列TencentOS tiny内核源码分析的文章,敬请期待吧!

    IoT协议栈 :TencentOS tiny提供lwip、AT Adapter、SAL层,支持不同的网络硬件,如以太网、串口WIFI、GPRS、NB-IoT、4G等通信模块。在TCP/IP网络协议栈上提供常用的物联网协议栈应用层,如COAP、MQTT,支撑终端业务快速接入腾讯云;

    安全框架 :TencentOS tiny为了确保物联网终端数据传输安全以及设备认证安全,提供了比较完整的安全解决方案。安全框架提供的DTLS和TLS安全协议加固了COAP及MQTT的传输层,可确保物联网终端在对接腾讯云时实现安全认证和数据加密;另外针对低资源的终端硬件,安全框架还提供与腾讯云IoTHub配套的密钥认证方案,确保资源受限设备也能在一定程度上实现设备安全认证;物联网安全是非常重要的,这些框架也是必须存在的。

    组件框架 :TencentOS tiny提供文件系统、KV存储、自组网、JS引擎、低功耗框架、设备框架、OTA、调试工具链等一系列组件,这部分我觉得还是很不错的,期待ing;

    开放API (规划开发中):TencentOS tiny将在协议中间件和框架层上提供开放API函数,这样子就能很方便使用中间组件的功能,我是最喜欢这种开发的,不造轮子,能直接使用。简单来说这个API能快速对接腾讯云,实现终端业务上云的需求,最大程度减少终端物联网产品开发周期,节省开发成本;

    示例应用 :TencentOS tiny提供的示例代码,模块测试代码等,方便用户参考使用。

    腾讯云物联网平台(图中最上层的部分):严格来说这部分不算TencentOS tiny的框架内容,这是接入平台层了,腾讯云的物联网平台都是提供多种语言的SDK包,当然在嵌入式设备上肯定使用C SDK的,不过总的来说都是很不错的。

    总的来说TencentOS tiny还是非常不错的,该有的功能都有,可以考虑使用一下这个操作系统~

    项目地址:https:// github.com/Tencent/Tenc entOS-tiny

    11 ffmpeg

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。

    项目地址:GitHub - FFmpeg/FFmpeg: Mirror of https:// git.ffmpeg.org/ffmpeg.g it

    12 Lua

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

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

    项目地址:http://www. lua.org/

    13 cJSON

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

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

    项目地址: http:// sourceforge.net/project s/cjson/

    14 CMockery

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

    主要特点:

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

    欢迎关注我 @韩飞宇 !

    简单介绍一下自己,我是 飞宇 本硕均于某中流985 CS就读,以前是在百度搜索部门做后端研发实习生,后来又去了字节某电商部门担任后端研发工程师。
    虽然是所谓的科班出生,但学校教育质量就不提了。。。懂得都懂,所以我学习计算机基本全靠自学,B站、github、网易云课堂、YouTube等就是我的学习课堂。
    我会继续分享一些计算机学习经验、一些不错的编程资源以及自己在互联网一二线公司工作的工作体验和日常生活等。