C 语言由 B 语言演化而来,最初的应用就是重写 Unix 系统。可见 C 语言是为了写操作系统和底层程序的。
大学的 C 语言教学讲的是最基础的语法,而 ACM 竞赛只是将 C 语言作为工具 (ACM 竞赛的核心是数据结构与算法),因此绝大多数人是无法用 C 语言写出操作系统的。
[% callout style=danger %]
以下是玩笑
实际上,大家完全有能力开发操作系统的某些组件,例如 Linux/Unix 系统里的 true 命令:
int main(void) { return 0; }
除此之外,还有 false 命令:
int main(void) { return 1; }
因此大家一定要有自信,不要质疑自己的能力。
[% endcallout %]
说正经的。C 语言程序总是在一个黑乎乎的窗口里,从上到下地输出文字,看着太丑陋,能否改善一下?
彻底变得高大上
C 语言写窗口对话框?
不是写不出来,而是不合适,因为基于 C 语言的框架很少。
因此最好换个语言,例如 Visual Basic、Visual C++、Qt C++ 等。
必须用 C 语言!
必须要用 C 语言来写有界面的程序,怎么办?给出三种思路:
- 找到一个用 C 语言的图形界面类库。
- Windows API
- 让黑窗口看起来也高大上。
图形界面类库
目前最成熟的、基于 C 语言的框架为 GTK+
。大量的基于 Linux 系统的图形界面程序都是用 GTK+ 库开发的。
GTK+ 也支持 Windows 和 OS X,GIMP 就是一个很好的例子。
因为学习一个类库特别是图形界面类库的学习成本比较高,而且 GTK+ 在非 Linux 系统中的配置比较麻烦,因此,没有人愿意采用类似解决方案来完成 C 语言大作业。
Windows API
这一条和上一条是类似的,只不过 GTK+ 是封装好的,而 Windows API 是没经过封装的接口。
可以通过 Windows API 来实现一些图形界面功能(例如通过 GetOpenFileName 函数来显示“打开文件”对话框)。当然仅限于 Windows 系统。
如果有人使用 Windows API 来实现完整的图形界面功能,那么他有可能疯了。
让黑窗口高大上
如果能在黑窗口里画出各种方框,把文字排列好,效果也是不错的。不过,我们只打算告诉你应该从哪儿入手,具体如何编程还需自己搜代码自己仿写。
这个东西是和操作系统有关的:
Windows
需要一个 Windows 专属的头文件——
#include <conio.h>
具体有哪些函数呢?快去问度娘。
如果想对黑窗口本身做点修改,可以去百度mode
、color
等命令的用法。
Linux
这个东西叫 ncurses
。用起来会比 Windows 那个轻松很多,因为你不需要自己画框了。