下拉刷新
C 项目

这里是按照「分类」阅读往期的 HelloGitHub 月刊内容, 您目前在查看 HelloGitHub C 项目 集合。

1
86Box
Star 4.5k
Vol.124
9 小时前

复古 PC 模拟器。这是一款开源的复古电脑模拟器,可自由搭配、模拟各种经典硬件,比如奔腾、赛扬处理器、声卡、显卡等。支持运行 DOS、Windows 98、Windows XP 等早期操作系统和同时代的软件。

86Box
Star 8.8k
Vol.124
5 天前

小巧的 Windows 网络管控工具。这是一款用于管理和控制 Windows 网络活动的工具,体积小、没广告、完全免费。它基于 WFP 实现网络过滤,不依赖系统自带防火墙,支持自定义规则、IPv6、拦截名单等功能。

simplewall
3
keyd
Star 5.8k
Vol.123
2 个月前

Linux 系统级改键工具。这是一个 Linux 上的系统级键盘重映射守护进程,基于内核输入层(evdev/uinput)实现,无需依赖桌面环境,配置在 X11、Wayland 和 TTY 终端中均可生效。支持按下、长按设置不同动作、自定义按键组合,以及为不同键盘单独配置按键映射规则等功能。

Star 6.9k
Vol.123
16 小时前

灵活易用的 TLS 库。该项目是用 C 语言编写的加密库,可用于实现加密原语、X.509 证书操作以及 SSL/TLS 和 DTLS 协议。它体积小巧、易于移植,并提供丰富的示例,适用于物联网和嵌入式系统等资源有限的设备。

5
ds4
Star 2.1w
Vol.122
12 小时前

Redis 作者写的 DeepSeek 专用推理引擎。该项目是 Redis 作者用 C 语言开发,专为 DeepSeek-V4-Flash 模型设计的本地轻量级推理引擎。它并非简单的 GGUF 运行工具,而是功能齐全的独立推理引擎,支持 Metal、CUDA 硬件加速、2-bit 量化、磁盘 KV 缓存持久化、HTTP API 服务和编程智能体等功能。

ds4
Star 3.5k
Vol.122
14 天前

仅 2000 行的教学操作系统。这是一个仅用 2000 行代码实现的极简操作系统,内含 9 个课程实验,旨在让每位学生都能看完并理解操作系统的全部源码。它体积小、结构清晰,可以在 QEMU 模拟器和 RISC-V 开发板上运行,实现了内存管理、进程控制、系统调用、文件系统、网络通信和 Shell 等核心组件。

egos-2000
Star 1.6w
Vol.121
13 小时前

免安装的 Windows 监控工具。这是一款免安装的开源 Windows 系统监控与调试工具,可实时查看进程资源占用、网络活动、磁盘读写等信息,支持定位占用文件的进程、查看内核级调用栈和管理系统服务等功能。遇到文件无法删除?一查便知是被哪个进程占着。

systeminformer
Star 2.5k
Vol.120
4 年前

把井字棋塞进一次 printf 调用。这是一个展示 C 语言黑魔法的开源项目,在单个 printf 调用内完成了游戏逻辑运算、变量赋值、胜负判断和界面渲染,同时支持数字键落子、走法检测和刷新棋盘功能。

printf-tac-toe
Star 2.1k
Vol.119
4 个月前

比图片还小的免费看图工具。这是一款用 C 语言编写的 Windows 轻量级图片查看工具,让你几乎感受不到等待。它体积小、启动快,拥有极快的图片加载和切换速度,支持 JPG、PNG、WEBP、BMP、GIF、ICO、TIF 等主流图片格式。

voidImageViewer
10
zenc
Star 4.3k
Vol.119
25 天前

像高级语言一样写 C 代码。这是一个现代系统编程语言,写起来像高级语言又能像 C 语言一样运行。它通过编译生成 GNU C/C11 代码,兼容 C ABI(应用程序二进制接口),支持无缝集成到现有的 C 语言生态,在保持 C 语言运行效率的基础上,提升开发体验。

import "std/net/tcp.zc"

fn main() {
    "Echo Server listening on :8080";
    let listener = TcpListener::bind("127.0.0.1", 8080).unwrap();

    loop {
        // Accept new connections
        let stream = listener.accept().unwrap();
        let buf: char[1024];
        
        while true {
            let n = stream.read(&buf[0], 1024).unwrap();
            if n == 0 { break; }
            stream.write(&buf[0], n);
        }
    }
}
zenc