找对课程和教材,25天搞定C语言问题不大。
下面来分享一下C语言的学习路径并分享一些适合新手的C语言项目。
零基础的小伙伴可以先从视频课程入手,国内浙大翁凯老师的课,看过的都说好~
浙大C语言-翁凯,分为两门:C语言程序设计CAP(大学先修课):https://www.icourse163.org/course/ZJU-1001614008
C语言程序设计进阶:https://www.icourse163.org/course/ZJU-200001 第一门是面向高考结束想提前自学一点编程和大一新生的,叫大学先修课。
虽然叫先修课,但是覆盖了C语言的主要知识点~
第二门是C语言程序设计进阶,会带你用C语言完成一些有趣的项目,比如一些图形界面小游戏。
先修课学习C语言语法基础,进阶课带你项目实操,搭配使用,你就是同学中的大神!
夏天:计算机必看经典书籍(附pdf下载),请注意查收~关于编辑器/IDE,推荐如下几个适合初学者的:
- Visual Studio(Windows平台)。微软出的,有点庞大。
- Dev C++。没有VS那么复杂,是一款免费的C/C++ IDE,内嵌GCC编译器,是NOI等比赛的指定工具。
- Code::Blocks一款开源、跨平台、免费的 C/C++ IDE,它和 Dev C++ 非常类似,小巧灵活,易于安装和卸载,不过它的界面要比 Dev C++ 复杂一些,不如 Dev C++ 来得清爽。
C语言经典的书籍这里推荐3本:
- 第一本是《C Primer Plus》,比较适合入门。内容循序渐进,书中的每一个知识点都有很多生动简单的示例,并给出了相应的运行结果。而且每章末设计了大量复习题和编程练习,帮助巩固所学知识和提高实际编程能力。
- 第二本是《C程序设计语言》,豆瓣评分9.4分,适合有一点基础后再来看。
- 进阶推荐《C和指针》。全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习。
适合新手练习的C语言项目推荐!
核心的基础知识掌握并会初步运用,其实就可以开始做一些mini的项目了,在实践中学习更有体感,理解更深刻。并不建议大家在理论基础上花太多时间,毕竟计算机是时间性强的学科,必须多动手,多实践。
(1)PTA-<a href="http://www.zhihu.com/search?q=%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2297523111%7D" class="internal">程序设计实验辅助教学平台
传送带:https://pintia.cn/problem-sets?tab=0
上面有非常多的习题,非常适合练习。
夏天:计算机必看经典书籍(附pdf下载),请注意查收~(2)webbench-网站压测工具
一款知名的linux下的网站性能压测工具,由Lionbridge公司开发,代码不多,不到1000行。
它使用fork()模拟多个客户端同时访问我们设定的url,测试网站在压力下的性能,可以同时模拟3W个并发连接去测试网站的负载能力。
webBech的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。
webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力。还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试,
下载地址:
http://home.tiscali.cz/~cz210552/webbench.html
使用起来非常简单:wget https://www.ha97.com/code/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make
make install 命令行选项
其核心原理:
- 父进程fork多个子进程,每个子进程在用户要求时间或默认时间对目标网站发起访问请求,父子进程通过管道进行通信。子进程通过管道写记录到的信息,父进程通过管道读子进程的信息,子进程在时间到后结束。父进程在子进程退出后统计并展示信息。
(3)CJson-JSON解码器
CJson是一款JSON解码器,代码不到1000行。github star 6.7K。
github:https://github.com/DaveGamble/cJSON
其核心数据结构:- /* The cJSON structure: */
- typedef struct cJSON
- {
- struct cJSON *next;
- struct cJSON *prev;
- struct cJSON *child;
- int type;
- char *valuestring;
- /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
- int valueint;
- double valuedouble;
- char *string;
- } cJSON;
复制代码 支持的类型:- /* cJSON Types: */
- #define cJSON_False 0
- #define cJSON_True 1
- #define cJSON_NULL 2
- #define cJSON_Number 3
- #define cJSON_String 4
- #define cJSON_Array 5
- #define cJSON_Object 6
复制代码 其API用起来也非常简单:- char *out;cJSON *json;
-
- json=cJSON_Parse(text);
- if (!json) {
- printf(&#34;Error before: [%s]\n&#34;,cJSON_GetErrorPtr());
- } else {
- out=cJSON_Print(json);
- cJSON_Delete(json);
- printf(&#34;%s\n&#34;,out);
- free(out);
- }
复制代码 (4)EasyLogger-高性能、轻量级C/C++日志库
是一款超轻量级、高性能的C/C++日志库,非常适合资源敏感的场景。
其功能简单,上手迅速,以插件形式动态扩展支持更多实用功能。
代码下载链接:
https://gitee.com/Armink/EasyLogger
主要特性:支持用户自定义输出方式(例如:终端、文件、数据库、串口、485、Flash...);
日志内容可包含级别、时间戳、线程信息、进程信息等;
日志输出被设计为线程安全的方式,并支持 异步输出 及 缓冲输出 模式;
支持多种操作系统(RT-Thread、UCOS、Linux、Windows...),也支持裸机平台;
日志支持 RAW格式 ,支持 hexdump ;
支持按 标签 、 级别 、 关键词 进行动态过滤;
各级别日志支持不同颜色显示;
扩展性强,支持以插件形式扩展新功能。 (5)cWebsocket-轻量级websocket服务库
传送带:https://github.com/m8rge/cwebsocket
特点:跨平台、轻量级。
(6)cmockery-轻量级单元测试框架
一款轻量级C语言单测框架,google发布的,非常小巧和轻量级,代码不到3K行。对其他开源包没有依赖,对被测试代码侵入性非常小。
是由google在2008年发布的,这是google open source blog上的博文:
https://opensource.googleblog.com/2008/09/cmockery-easier-unit-tests-for-c.html
github链接:
https://github.com/google/cmockery
(7)C语言实现数独
youtube上有完整的详细的系列教学视频,强烈推荐:
https://www.youtube.com/playlist?list=PLkTXsX7igf8edTYU92nU-f5Ntzuf-RKvW
不过视频是英文的,需要一定的英文听力能力。
(8)Tinyhttpd-轻量级http server
一款超轻量级http server,使用C语言开发,代码总共才500行左右。通过这个小工程可以理解一个httpserver的本质。
github star 7.8K:https://github.com/EZLippi/Tinyhttpd
基础工作原理:
(9)libev-开源事件驱动框架
一款C语言编写的高性能事件驱动框架,基于reactor模式实现。
官网:http://software.schmorp.de/pkg/libev.html
github(star 1.2K):https://github.com/enki/libev
文档介绍:https://metacpan.org/dist/EV/view/libev/ev.pod注意:学习此框架需要了解Linux操作系统部分基础知识。 IO多路复用技术:
reactor模式:
模块间的交互:
(10)buildyourownlisp-小型Lisp解释器
一本开源书籍,教你用C语言实现自己的lisp语言:一个1000行左右的简单lisp。
链接:https://www.buildyourownlisp.com/
网上有2个中文翻译版:
(1)https://www.abnerchou.me/BuildYourOwnLispCn/
(2)并未翻译完成:https://ksco.gitbooks.io/build-your-own-lisp/content/
网友的实现:https://github.com/NessOffice/Lisp_on_C
(11)kilo-文件编辑器
用不足1000行代码实现一个文件编辑器,酷不酷?
github star已有5.3K:https://github.com/antirez/kilo
博客介绍:http://antirez.com/news/108
官网:https://viewsourcecode.org/snaptoken/kilo/
(12)ffmpeg-视频播放
不足1000行代码实现视频处理功能:
http://dranger.com/ffmpeg/ffmpeg.html
在做项目的过程中,大家还要掌握良好的编码习惯,这里挑选了业内毕竟推崇的2个编码规范:
①华为C语言编码规范:https://www.dongeasy.com/wp-content/uploads/2018/03/%E5%8D%8E%E4%B8%BA%E6%8A%80%E6%9C%AF%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8c%E8%AF%AD%E8%A8%80%E7%BC%96%E7%A8%8B%E8%A7%84%E8%8C%83.pdf
②Google C++ Stype:https://google.github.io/styleguide/cppguide.html
学习计算机一定不要想着速成,没有什么捷径和超能力。要下苦功夫去啃那些经典书和源码,然后自己动手写,所有技术大佬都是一行行代码敲,一本本书啃出来的。
我看过的书籍里的一部分
我在大学期间,为了把专业学好,看了大量经典的专业书籍,整理了这份计算机必读的高分经典书籍:
需要的戳下面链接下载
这份书单对于CS学习的同学帮助非常大且十分系统,这些书籍的电子版已经整理好了。
需要的直接戳这里领:计算机必看经典书籍(附pdf下载),请注意查收~
希望本回答能对你有所帮助~ |