【问题标题】:I need help understanding what Exercise 5-12 is asking for in the C Programming Language book我需要帮助来理解 C 编程语言书中练习 5-12 的要求
【发布时间】:2010-04-15 23:36:15
【问题描述】:

K&R C Programming Language: pg. 105

扩展 entabdetab 以接受简写

entab -m +n

表示每个n 列的制表位,从m 列开始。

entab 用制表符替换多个空格,detab 则相反。我的问题涉及制表位和entab。我认为对于detab,很容易确定到达下一个制表位所需的空格数,所以不用担心。使用entab,用制表符替换空格会稍微困难一些,因为我无法确定制表符到它自己的制表位有多大(除非有办法确定)。

我是否正确地考虑过这件事?

【问题讨论】:

    标签: c kernighan-and-ritchie tabstop


    【解决方案1】:

    “制表位每 n 列,从 m 列开始”告诉您每个制表位有多大,至少根据我的阅读:它只是 n。只有第一个制表位不同;那个是m

    【讨论】:

    • 所以不要担心entab 因为\t 会转到它想要的任何tabstop?
    • @marsol0x 对于您正在考虑的情况,我认为您应该将\t 的长度输入n,其中 m = 0。使用 mn 您可以向 entab 指定系统的制表位行为。
    【解决方案2】:

    entab 需要在空格到达制表位时解决 - 然后空格可以被制表符替换。

    例如下面一行文字(标尺可以参考):

               1   1   2   2   2
    1      8   2   6   0   4   8
    -------+---+---+---+---+---+
              this     is a line
    

    entab -8 +4 之后应该如下所示:

    \t  this \tis a line
    

    (请注意,在该行中的“this”后面有两个制表符可能是合理的,因为空格或制表符都会到达该特定的制表位)。

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多