Perl(或C printf)返回一个选项卡,可能吗?

Perl(或C printf)返回一个选项卡,可能吗?,c,perl,tabs,printf,C,Perl,Tabs,Printf,我们都知道如何将字符串打印到一个选项卡上\t printf ("Hello\tthere!\n"); 哪些产出: Hello there! 向后打印一个标签怎么样?我知道我们可以使用\r从行的开头开始,但是当缩进比这更复杂时,我正在寻找类似\bt的东西(如果存在的话),这样我就可以写: printf ("Hello\tthere! \n\tHow\n\btare you?\n"); 要获得输出,请执行以下操作: Hello there! How

我们都知道如何将字符串打印到一个选项卡上\t

printf ("Hello\tthere!\n");
哪些产出:

Hello    there!
向后打印一个标签怎么样?我知道我们可以使用\r从行的开头开始,但是当缩进比这更复杂时,我正在寻找类似\bt的东西(如果存在的话),这样我就可以写:

printf ("Hello\tthere! \n\tHow\n\btare you?\n");
要获得输出,请执行以下操作:

Hello    there!
             How
         are you?
编辑

我对这里回复的数量和速度感到惊讶,有时甚至对一些评论的无用性感到惊讶,但只有少数评论。我试图实现的当然比这更复杂,它正确地格式化了一个易于阅读的XML文件。我想确定没有更简单的方法,回复证实没有感谢

编辑2


对不起,伙计们,你们否决这个问题是对的,首先是因为我没有指定我正在向文本文件写入内容,其次是因为我假设文件处理程序可以“记住”选项卡。很抱歉浪费了你的时间。

不,没有特殊角色可以做你想做的事。甚至
\b
的行为也取决于平台

\bt
是一个简单的空格字符,后跟字母
t
。所以语法是受支持的,但没有特殊的行为

但你为什么需要这个?为什么不直接使用:

printf("Hello\tthere!\r\n\tHow\r\nare you?\n");
无法“返回选项卡”,但还有其他选项:

正如您所指出的,
\t
为您提供了一个向前的选项卡

\b
可以给你一个退格,所以你可以用它“备份”

还有一些不太常用的:
\f
是表单馈送/新页面(从打印机中弹出页面)
\v
是一个垂直选项卡(在同一列上向下移动一行)

因此,使用其他选项可以模拟所需的内容

printf("Hello, this is\n\t\tjust a test.\n");
printf("Hello, this is\v\b\bjust a test.\n");
最后看起来像:

Hello, this is
        just a test.
Hello, this is
    just a test.
然后,您可以使用以下内容简化代码:

#define BACKTAB "\v\b\b"

printf("Hello, this is%sjust a test.\n", BACKTAB);
我认为这是你能用print做的最好的了。如果你能控制显式地进行了多少标记。若要返回选项卡,只需使用较少的选项卡。从您提供的示例来看,您似乎希望选项卡级别被记住,并且缩进的程度比打印时实际缩进的程度要远。它将出现在与相同的制表位你是吗?

假设:

printf ("Hello\tthere! \n\tHow\n\btare you?\n");
您希望看到:

Hello there! How are you?
当然读起来像是XY问题。你到底想做什么?如果你想尝试演示一个格式化问题,你应该确保你的示例输出是正确的。我想这不是故意的,
如何缩进一些额外的空格?您可能应该解释一下您认为
\bt
做了什么。这与
printf
无关。没有任何与您的
\bt
相近的内容,您必须通过在新行上打印足够数量的制表符/空格来模拟此行为。@melpomene:为什么这与printf无关?
\r\n
是多余的。只需使用
\n
。对,这就是为什么这个问题似乎没有什么意义
prinf()
应将换行符视为回车换行符对。那么,为什么需要在新行上退格呢?I/O系统应该将新行视为一对回车换行符,这是惯例所在平台上的换行符。你说得对,Stephen,我应该在一个文本文件中添加我正在编写的信息,该文件“记住”。@FabrizioProsperi不,文本文件不“记住”。您可能正在向串行端口或类似的特殊文件写入数据,这些文件无法将
\n
转换为
\r\n
?@anishsane似乎不太可能,因为这应该是一个XML文件。@melpomene:您说得对,我搞糊涂了。天哪,我得记下标签的数量。谢谢你帮我记住了一些基本知识。是的@Mike,如果我必须这么做的话,你的建议就行了。谢谢
printf ("Hello\tthere! \n\tHow\nare you?\n");