C语言快速入门——使用函数重构ASCII码表输出

广告位

需求分析 输出ASCII码表是我们目前所编写的最复杂的程序,借函数的契机,我们将其函数化,以此更加深刻的理解函…

需求分析

输出ASCII码表是我们目前所编写的最复杂的程序,借函数的契机,我们将其函数化,以此更加深刻的理解函数的编码实现以及对于程序的有效组织。 对于新的函数实现,我们有如下要求:

  1. 函数可以指定输出的列数(最少1列,最多3列)
  2. 能够输出表头
  3. 能够防止错乱输出,即保持输出的整洁性。
  4. 程序结构清晰

根据以上需求,我们做一个简单的分析:

  1. 函数应该接受一个整数值,这个值代表输出的列数,我们需要对这个数值的有效性进行控制,这可以使用if语句控制。
  2. 表头输出可以作为一个独立的函数实现,也可以合并到整个输出函数中。
  3. 对于一些会引起输出表格错乱的字符,如换行符,我们需要特殊处理,这可能需要一个专门的函数。
  4. 因为函数至少要输出一列,所以我们可以先输出当前字符,再根据列数输出第二列、第三列字符。在这种输出方案下,if语句会减少,但程序逻辑结构会复杂。如果认为程序的清晰性更重要,则可以按列数独立输出。

实现

特殊字符处理

在输出的过程中,一些特殊的字符会影响表格输出的美观性,上一版中我们是把特殊的字符转换为空格,这次也一样,不过我们将此实现放在一个独立的函数中,以增加灵活性。

函数escape_check接收当前被处理的ASCII码,判断它是否需要特殊处理,如果是,则转换为空格,否则返回字符本身。如果不理解函数中数值的含义,可以查看ASCII表加深理解。

C语言快速入门——使用函数重构ASCII码表输出

输出表头

我们使用for循环语句输出表头,列之间有一个水平制表符间距,表头与ASCII表用短横线分隔。

C语言快速入门——使用函数重构ASCII码表输出

输出ASCII码表

下面的代码展示了两种可能的方案:

  • #1 使用一个for循环+多个if语句实现,缺陷就是每执行一次,循环就“停顿”一下。
  • #2 优先使用判断,循环执行的比较“流畅”。
C语言快速入门——使用函数重构ASCII码表输出

程序的源代码中包含了上述两种方案的具体实现,在这里我们则展示了代码最少方案。

C语言快速入门——使用函数重构ASCII码表输出

希望通过本节内容的学习,我们能掌握用函数组织程序的能力。

天使的淚滴

关于作者: 天使的淚滴

为您推荐