c -\t 和\b 做什么?

标签 c printf

我期待这行简单的代码

printf("foo\b\tbar\n");

将“o”替换为“\t”并产生以下输出

fo     bar

(假设制表位每 8 个字符出现一次)。 相反我得到

foo    bar

我的 shell 似乎将\b 解释为“将光标向后移动一个位置”,将\t 解释为“将光标移动到下一个制表位”。这种行为是否特定于我运行代码的 shell?我应该期望在不同的系统上有不同的行为吗?

最佳答案

不,这或多或少是他们的本意。

在 C(和许多其他语言)中,您可以使用 \ 符号插入难以看到/键入的字符:

  • \a 是警报/响铃
  • \b 是退格键/rubout
  • \n 是换行符
  • \r为回车(返回左边距)
  • \t 是标签

您还可以使用 \0nnn 指定任何字符的八进制值,或使用 \x< em>nn.

  • EG:_的ASCII值为八进制137,十六进制5f,所以也可以打成\0137\x5f,如果您的键盘没有 _ 键或其他键。这对于 NUL (\0) 和 ESC (\033)
  • 等控制字符更有用

正如有人发布的(然后在我可以 +1 之前删除了他们的答案),还有一些不太常用的:

  • \f 是换页/新页面(从打印机弹出页面)
  • \v 是一个垂直制表符(向下移动一行,在同一列)

在屏幕上,\f 通常与 \v 相同,但在某些打印机/电传打字机上,它会 一直到下一张纸。

关于c -\t 和\b 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8657702/

相关文章:

c - 检查字节中是否设置了第 n 位的函数

C 矩阵字符未正确显示打印

C: sprintf 和递归

c - 使用 fprintf 时出现问题

java - 是否有用于解析 printf 格式字符串的 Java 库?

c++ - 通过使用任何有效算法最小化 Blackbox 调用数量来减少 2D 网格

c - 从 Core Audio 框架开始

C - 使用字符指针替换文件中的字符串

linux - 是否有一个程序可以像 printf 一样以整个文件作为输入?

c - 当用户输入一个空行时终止一个c程序