扫一扫
关注 HG 公众号
发现更多开源乐趣

C 项目

兴趣是最好的老师,HelloGitHub 就是帮你找到编程的兴趣。

switch-lan-play

第 49 期 Star 943 Watch 40 Fork 104
让您和您的朋友像在局域网中一样玩 switch 游戏。教程

myscan

第 48 期 Star 26 Watch 1 Fork 6 中文
开源的多线程 socket 扫描 IP 端口的程序。目前仅支持 Windows 系统,代码简单可作为初学者学习项目

命令:
myscan -p Port1[,Port2,Port3...] [-t Thread](default 10) [-d] (DEBUG) StartIp EndIp
例子:
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

libhv

第 48 期 Star 434 Watch 15 Fork 96
一个跨平台、简单易用的非阻塞 IO 事件循环库。用它可以快速的编写 HTTP 客户端/服务端,可提供高性能的 httpd 服务。项目模块划分清晰,代码可读性高,快去看下源代码吧。示例代码:

#include "HttpServer.h"

int http_api_echo(HttpRequest* req, HttpResponse* res) {
    res->body = req->body;
    return 0;
}

int main() {
    HttpService service;
    service.base_url = "/v1/api";
    service.AddApi("/echo", HTTP_POST, http_api_echo);

    http_server_t server;
    server.port = 8080;
    server.service = &service;
    http_server_run(&server);
    return 0;
}

DungeonRush

第 48 期 Star 872 Watch 15 Fork 108
元气贪吃蛇游戏。作者受到元气骑士的启发,基于贪吃蛇进行一些玩法上的创新。该项目适用于 C 语言初学者、第一次尝试使用跨平台图形库的同学,参考本项目就可以写出一个可玩性高的游戏,收获满满成就感
DungeonRush

freebsd

第 46 期 Star 5.0k Watch 492 Fork 1.9k
FreeBSD 操作系统源码仓库。快拉住我,我有点飘了竟然敢点开操作系统看源码 😅

xmake

第 45 期 Star 2.7k Watch 108 Fork 295 中文
一个基于 Lua 的轻量级跨平台自动构建工具。支持在各种主流平台上构建项目,主要用于解决 C/C++ 项目的跨平台构建,同时支持与其他语言的混合编译。工程配置语法简单易读,对初学者友好、上手方便

add_requires("libuv master", "ffmpeg", "zlib 1.20.*", "tbox >1.6.1")
target("test")
    set_kind("shared")
    add_files("src/*.c")
    add_packages("libuv", "ffmpeg", "tbox", "zlib")

xmake

smartdns

第 45 期 Star 2.6k Watch 97 Fork 455 中文
一个运行在本地的 DNS 服务器。能够提高网络访问速度等诸多妙用,架构图如下:
smartdns

scrcpy

第 44 期 Star 30.8k Watch 698 Fork 3.1k
一款可以用电脑显示并控制 Android 手机的开源工具。连接方便使用方便,手机无需 root、无需安装任何应用。支持 USB、Wi-Fi 两种方式连接,支持 Windows、macOS、Linux 三种操作系统。注意电脑端需要安装 adb 工具
scrcpy

tmux

第 43 期 Star 17.8k Watch 439 Fork 1.2k
一个终端复用工具,可极大的提高工作效率。

  • 提供了强劲的、易于使用的命令行界面
  • 可横向和纵向分割窗口
  • 窗格可以自由移动和调整大小,或直接利用四个预设布局之一
  • 可在多个缓冲区进行复制和粘贴
  • 可通过交互式菜单来选择窗口、会话及客户端
  • 等等

tmux

linq4c

第 42 期 Star 22 Watch 1 Fork 3
如果你想在 C 中使用隔壁 C# 的 linq 方法,那么不妨来使用这个项目!这是它的 C 语言版。实现了 linq 的大部分方法(60+)。现在它还在不断完善中,欢迎更多的小伙伴加入共同维护

bool WhereCallback(void *item) {
    char *str= (char *)item;
    return str[0] == 'h';
}

void *SelectCallback(void *item) {
    return newStr("%s_1", (char *)item);
}

char *str1 = "huang", *str2 = "hai", *str3 = "feng";

ArrayList array = arrlist_new();
arrlist_append(array, str1);
arrlist_append(array, str2);
arrlist_append(array, str3);

Linq *lq = From(array);
ArrayList result = 
    lq
    ->Where(lq, WhereCallback)
    ->Select(lq, SelectCallback)
    ->ToArray(lq);

for(int i = 0; i < arrlist_size(result); i++) {
    printf("%s\n", arrlist_get(result, i));
}

linq4c