将活动位置移动到当前行上的下一个制表符位置



来自C标准(5.2.2字符显示语义):

\t(水平制表符)将活动位置移动到下一个水平位置 当前行上的制表位置。如果活动位置在 或超过最后定义的水平制表位置,行为 的显示设备未指定。

有人可以给我一个适用的案例吗?

比如说,您的文本控制台有 80 个字符的宽度,制表位置为 0,8,16,....72.根据标准,您知道如果您向控制台发送(打印)一个制表字符,您的光标将移动到第 8 个位置。如果两个,那么到第 16 位....如果是九,那么到第 72 位。但是,如果您发送更多表格,则不会指定光标应放置的位置。例如,在我当前的控制台上,在这种情况下,它被放置在最右侧(79)的位置,但我们绝不应该依赖这个假设。

关于选项卡

大多数终端程序每 8 列都有一个制表位。

  • 对于您打印的每个"\t",光标都会转到下一个可能的位置(通常为8个空格)。
  • 如果控制台中有 N 个制表字符的空间,则可以安全地从 0 打印到 N "\t"。
  • 假设我的小控制台只有 4 个选项卡的空间,并且(在新行之后)我有以下代码

    printf ( "ttttt" );  // As you can see...
    //...here I want to put 5 tabulation tabs on screen 
    

    在这种情况下,我们不知道最后一个 \t 将如何打印。

    注意:有时,如果您像这样打印许多\t; printf("ttt...tt); 光标转到前面的行,但我们无法确定它是否会发生。

    最新更新