C 语言程序太丑陋

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 语言来写有界面的程序,怎么办?给出三种思路:

  1. 找到一个用 C 语言的图形界面类库。
  2. Windows API
  3. 让黑窗口看起来也高大上。

图形界面类库

目前最成熟的、基于 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>

具体有哪些函数呢?快去问度娘。

如果想对黑窗口本身做点修改,可以去百度modecolor等命令的用法。

Linux

这个东西叫 ncurses。用起来会比 Windows 那个轻松很多,因为你不需要自己画框了。