做项目,学习的唯一手段是实践,并且对于C语言,你一定首先要放弃国内老谭的教材,不为别的,那书根本就不是标准C,而且是老谭压根不会写C的多少年前写的东西。然后挑选一个Devcpp, C-free,或者你很崇拜微软,不觉得装几个G的VS光学习个C是浪费生命的话,搞个最新的VS吧,千万不要用VC6,因为那个版本都不是标准C。
然后最好拿本 C primer plus, 这本书厚是厚,但绝对是唯一能让你准确认识C的唯一一本书。The C language, 很权威但不适合入门,你搞定入门了再看。学习书本的时候老是用Printf可能觉得很无聊。这时候,你可以用SDL2和libui, iup, 这些库来搞些有图形,有界面的玩意。
SDL2可以做简单游戏,有图有音。等这些都有感觉了,在Freebsd/Linux系统来进一步学习Unix API,make 等工具。记住不要用win,原因很简单,unix是用C写出来的,包括图形界面gtk,gnome, c语言就是为搞unix而诞生的,这个理由还不够么?相信我,unix下面浩瀚的C开源软件族群你一辈子也学习不完,所以资源是充足的,在UNIX下面用 C编程是顺畅的,一等公民的感受。
你如果喜欢微软Win32APi奇怪的符号定义习惯,你也可以去选择虐自己。当我没说。然后C的正真优势是可以直接操作硬件世界,也是如此,C是所有操作系统,高级语言java,等实现的基石,和运行的基础。你对硬件感兴趣,搞个单片机你就正真进入了应用C的阶段。
又或者你熟知各种常见C库,可以去给银行写服务器后端了。物联网硬件端是C, 路由器,机顶盒,电视机等用到嵌入式linux和安卓的地方也离不开C。