当前位置: 首页 > 知识库问答 >
问题:

打印 f 中带有“\n”的“\b”转义序列的奇怪行为

皇甫飞宇
2023-03-14

如果我理解正确\b转义序列将活动光标位置向左移动,并且\n在光标位置插入换行符。但是下面的例子令人困惑。

λ> cat hello.c                               
#include <stdio.h>

int main()
{
  printf("hello,world\b\b\b\b\bWOR");
  return 0;
}

λ> cc hello.c && ./a.out
hello,WORλ> 
λ> cat hello.c          
#include <stdio.h>

int main()
{
  printf("hello,world\b\b\b\b\bWOR\n");
  return 0;
}

λ> cc hello.c && ./a.out                     
hello,WORld
λ> 

在第一个示例中,\b\b\b \b将光标向左移动五个位置(在之后,>),然后插入 R\n的使用以一种意想不到的方式改变了 b的行为。原始字符串中的字符将被覆盖, \n将插入末尾,而不是光标位置。有人能解释一下这种行为吗?(或者它取决于终端?我在两个不同的终端上尝试过。)

共有1个答案

田博超
2023-03-14

在第一个示例中,\ b\b\b\ b\b将光标向左移动五个位置(在,之后),然后插入W,后面跟着O和R,并省略,之后原始字符串中的字符。

不,事情不是这样的。首先,写“hello, world”。然后五个\b字符将光标位置移动到“w”。然后写“WOR”,在显示中留下“hello, WORld”。然后您的程序结束,命令行shell继续执行。它打印提示“λ”

但是,在第二个示例中,使用 \n 会以意想不到的方式改变 b 的行为。原始字符串中的字符将被覆盖,\n 将插入到末尾,而不是光标位置。

同样,没有。写入“hello, world”,\b字符将光标移动到“w”,然后写入“WOR”,我们在显示中再次出现“hello, WORld”。然后\n将显示推进到下一行,在前一行中留下“hello, WORld”。

 类似资料:
  • 问题内容: 我在Java中有一个正则表达式问题。 当我尝试使用此正则表达式时: 我收到以下错误 我不知道该如何处理该错误。我已经尝试过将反斜杠加倍,但没有成功。我希望有人可以帮助我。 谢谢 问题答案: 这应该工作 原因是错误消息中列出的符号具有特殊含义,但不是已定义的要使用的特殊符号之一,这意味着您必须对其进行转义(在符号前添加一个多余的符号)。

  • 问题内容: 我有一个.txt文本文件,其中包含一些行。。我使用RequestBuilder对象加载了contains,并用word = String.split(“ \ n”);拆分了responseText。但我想知道,为什么结果包含“ \ n”部分。例如,我的文字: 结果是 非常感谢您的帮助。提前致谢。 问题答案: Windows回车()不应对您的结果产生明显的影响,也不必对传递给的正则表达式

  • 显示时,打印功能似乎可以减少点数: 航站楼里不会发生这样的事情: 即使我在其中运行IPython: 有人知道这种行为的原因吗?

  • 我有一个使用flowless项目的JavaFX列表。但是我得到了一个奇怪的边框(我没有启用任何边框,并且强制边框具有width=0px),它存在并且具有渐变效果: 当我将单元格background-inset设置为-1时,边框就没有了,所以我相信这个问题与背景有关。虽然这不是一个解决方案,因为如果我启用了边框(这是我想要的),渐变效果仍然存在。 有人知道我怎样才能摆脱这个边界吗? 谢谢!

  • 我试图理解编译器在这里抱怨的原因: 使用编译时生成的消息 如下: cexpr_test.cpp:在函数 'int main()' 中: cexpr_test.cpp:12:76: error: 'const std::initializer_list{((const char* const*)( 令人困惑的是,为什么它会毫无问题地构造第一个初始值设定项列表。我在这里缺少什么?

  • 我使用这个类在ImageView上绘制TriangleShapeView,它在用户单击事件时改变它的颜色和可绘制的图像。 在RecyclerView onBindViewHolder方法中,我检查,然后相应地设置TriangleShapeView颜色和可绘制图像: 在setOnClickListener中: 当项目第一次加载时,这可以正常工作,但当用户单击时: -第一个 我使用下面的xml布局来扩