c - C 语言中\t 遇到\b 会发生什么?

标签 c printf non-printable non-printing-characters

我知道什么\t\b意思是。
但是当 \b 时会发生什么?在\t之后,以及多个 \b 时会发生什么和\t结合起来。
看这段代码,它包含了\t的多种组合和\b :

printf("1\t1\t1\t1\n");
printf("---------------------------\n");
printf("1\t2\b\b3\n");
printf("\t\b1\n");

我得到了:

1       1       1       1
---------------------------
1      32
1

两个\b显示不同。
结果令人困惑,以我现有的知识根本无法解释。
不知道怎么理解\t\b最后。

最佳答案

printf("\b") 将退格字符发送到标准输出。 printf("\t") 将制表符发送到标准输出。从那里到环境会发生什么?您的程序无法真正控制它。

在典型的交互式输出设备上,退格键会将光标向左移动一列(不删除任何内容),制表符会将光标移动到下一个制表位(也不删除任何内容)。这应该可以解释您所看到的内容。

(实际上我得到的输出与您向我们展示的不同,这让我认为您使用的终端有不同之处,或者您错误地转录了输出。)

关于c - C 语言中\t 遇到\b 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42742436/

相关文章:

javascript - 如何检查字符是否会显示在浏览器中

javascript - 检测 JavaScript 中的不可打印字符

c - 使用变量作为函数参数和直接使用字符串作为函数参数有什么区别?

c - 在c中打印锯齿状数组

c# - 相当于使用 C# SerialPort 类设置 termios c_iflag=IGNPAR

c - 为什么我没有初始化它时值不为零?

c - 格式字符串周围的 `TEXT` 在 "printf"中是什么意思

Lua:在字符串中查找十六进制值

c++ - 在程序中打印有效,但 gdb 显示 "Cannot access memory at address ..."

c - GCC C vector 扩展 : How to test the result of a comparison (for conditional assignment, 等)?