# c-tutorial **Repository Path**: jjb_-learn/c-tutorial ## Basic Information - **Project Name**: c-tutorial - **Description**: c语言学习教程 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-30 - **Last Updated**: 2026-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C 语言学习教程 一个交互式 C 语言学习平台,支持在线编译运行代码和随堂测验。 ## 功能特性 - **15 章完整课程**:从环境搭建到多文件编程,覆盖变量、运算符、控制流、数组、字符串、函数、指针、结构体、动态内存、文件操作 - **在线代码编译**:基于 GCC 的实时编译执行,每段代码示例都能一键运行 - **代码沙盒**:自由编写 C 代码并即时查看编译输出和运行结果 - **随堂测验**:每章附带 3-4 道选择题,答完即时出分 - **学习进度**:通过 localStorage 自动跟踪学习进度 - **安全沙箱**:禁止 `system`/`exec`/`fork` 等危险调用,编译超时 10 秒、运行超时 5 秒 ## 技术栈 | 层级 | 技术 | |------|------| | 后端 | Python Flask | | 编译器 | GCC(C11 标准) | | 前端 | 原生 HTML / CSS / JavaScript | | 数据 | JSON 文件存储 | ## 项目结构 ``` c-tutorial/ ├── app.py # Flask 后端(页面路由 + API) ├── data/ │ ├── lessons_part1.json # 课程数据(第 1-5 章) │ ├── lessons_part2.json # 课程数据(第 6-10 章) │ └── lessons_part3.json # 课程数据(第 11-15 章) ├── templates/ │ ├── index.html # 首页 - 课程概览 │ ├── lesson.html # 课程详情页 │ ├── playground.html # 代码沙盒 │ ├── quiz.html # 随堂测验 │ └── 404.html # 404 页面 ├── static/ │ ├── css/style.css # 全局样式 │ └── js/main.js # 前端交互逻辑 └── README.md ``` ## 快速开始 ### 环境要求 - Python 3.10+ - GCC(需在终端可调用 `gcc` 命令) ### 安装与运行 ```bash # 1. 创建虚拟环境 python -m venv venv # 2. 激活虚拟环境 # Windows: venv\Scripts\activate # Linux/macOS: source venv/bin/activate # 3. 安装依赖 pip install flask # 4. 启动服务 python app.py ``` 浏览器访问 **http://127.0.0.1:5050** ## API 接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/lessons` | 获取所有课程列表(摘要) | | GET | `/api/lesson/` | 获取单节课程完整内容 | | GET | `/api/quiz/` | 获取指定章节测验题目 | | POST | `/api/compile` | 编译并运行 C 代码 | | POST | `/api/save_progress` | 保存学习进度 | ### 编译接口示例 ```bash curl -X POST http://127.0.0.1:5050/api/compile \ -H "Content-Type: application/json" \ -d '{"code": "#include \nint main() {\n printf(\"Hello!\\n\");\n return 0;\n}"}' ``` **响应:** ```json { "success": true, "output": "Hello!\n", "errors": "", "return_code": 0 } ``` ## 课程目录 | 章节 | 标题 | 分类 | |------|------|------| | 1 | C语言简介与环境搭建 | 入门基础 | | 2 | 第一个程序与基本结构 | 入门基础 | | 3 | 变量与数据类型 | 基础语法 | | 4 | 输入与输出 | 基础语法 | | 5 | 运算符与表达式 | 基础语法 | | 6 | 条件语句 | 控制流程 | | 7 | 循环语句 | 控制流程 | | 8 | 数组 | 数据结构 | | 9 | 字符串 | 数据结构 | | 10 | 函数 | 核心概念 | | 11 | 指针 | 核心概念 | | 12 | 结构体与联合 | 数据结构 | | 13 | 动态内存管理 | 进阶主题 | | 14 | 文件操作 | 进阶主题 | | 15 | 预处理器与多文件编程 | 进阶主题 | ## 安全说明 编译接口已做以下限制: - 禁止 `system()`、`exec` 系、`fork()`、`popen()` 等系统调用 - 禁止 `unlink()`、`remove()`、`rename()` 等文件操作 - 代码长度上限 20,000 字符 - 编译超时 10 秒,运行超时 5 秒 - 每次编译使用独立临时文件,执行后自动清理 > 注意:此安全策略适用于教学场景,不建议直接暴露到公网。 ## License Apache License 2.0