关于C语言中\b的用法

为什么printf("\n %d %d\t\b%d",5,6,7); 的输出结果是7?
求解决。。

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,输入C语言代码:printf("12345\b\babc");。

3、编译器运行test.cpp文件,此时成功通过\b删除了前面打印的字符。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-22
\b是退格的意思,但它的实际用法与键盘上的回删键是不太一样的
C语言中的\b,是光标向前移动一个字符的意思
所以你的输出开始都没问题,到了\b那里,因为前面正好是一个\t制表符,所以退格就退了一个制表符的位置,到了本行的开头了,然后输出了一个7,把本行的第一个空格覆盖了,此时程序结束,默认会输出“Press any key to continue”,这一行字符会把后面的5,空格,6等都覆盖掉了
如果你在输出结尾加上一个\n,“Press any key to continue”就会跑到下面一行,5,空格,6等就不会被覆盖,只是7跑到了前面去了,占了第一个空格的位置

回答满意的话,望采纳追问

\t\b退了一个制表符的位置为什么是到了本行开头,不是应该是第二个%d也就是6的后面吗

追答

因为一个\t是占4个字符位置,所以\b回退一个\t,就是回退了4个字符位置
回退时,\t当作一个字符位,然后还要再往前退3位

满意望采纳哦

追问

我明白你的意思,但是为什么printf("123456789\t\b1");的输出结果是1234567891Press any key to continue

追答

因为前面加了\n与不加\n的结果是不一样的

如果不加\n的话,都是一个字符位,比较容易理解
前面加\n的话,与\t合起来用,就是回退制表位(4位)了

追问

我在VC6.0上制表位应该是8位,然后为什么下面这段源代码的输出结果是图片那样?

#include <stdio.h>

 void main()

{

printf("\n12345678\t\b1");

printf("\n");

}


它好像只退了4格,也就是制表符8格的一半,但是最开始我问你的那个一共退了8格。

本回答被提问者和网友采纳
第2个回答  2012-01-18
\b表示将输出位置左移一位。
printf("abc\bd"); //这个将输出:abd
原因是先输出abc,这时输出位置在c后面,接着输出\b,将输出位置移到c上,再输出d时,d将c覆盖了,因此输出:abd。
第3个回答  2019-02-24
我试过了,答案明明是:_5_6___7(在这里使用_代表空格数)
第4个回答  2017-12-21

结果并不是7,看图