我期待这行简单的代码
printf("foo\b\tbar\n");
将“o”替换为“\t”并产生以下输出
fo bar
(假设制表位每 8 个字符出现一次)。 相反我得到
foo bar
我的 shell 似乎将\b 解释为“将光标向后移动一个位置”,将\t 解释为“将光标移动到下一个制表位”。这种行为是否特定于我运行代码的 shell?我应该期望在不同的系统上有不同的行为吗?
最佳答案
不,这或多或少是他们的本意。
在 C(和许多其他语言)中,您可以使用 \
符号插入难以看到/键入的字符:
\a
是警报/响铃\b
是退格键/rubout\n
是换行符\r
为回车(返回左边距)\t
是标签
您还可以使用 \0
nnn 指定任何字符的八进制值,或使用 \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/