當前位置: 華文星空 > 知識

有哪些小的 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等就是我的學習課堂。
    我會繼續分享一些電腦學習經驗、一些不錯的編程資源以及自己在互聯網一二線公司工作的工作體驗和日常生活等。