/b的作用

Posted 8重8

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了/b的作用相关的知识,希望对你有一定的参考价值。

在学习C语言的过程中,我发现转义字符\\b的含义容易被误解为backspace,也就是键盘上的退格删除键。但事实并非如此。

先来看一段程序。

#include <stdio.h>

int main(void)
{
printf("123456789\\b");

return 0;
}
这段程序编译运行的输出是:

123456789
可以看到末尾的字符9并没有被删除,这说明\\b的行为与键盘上的backspace是不同的。

再来看一段程序。

#include <stdio.h>

int main(void)
{
printf("1234567\\b\\b\\b\\b89");

return 0;
}
编译运行这段程序,可以看到它的输出是:

1238967
可以看到,在输出1234567之后,因为紧接着要输出4个\\b,这时程序把光标前(左)移了4个字符的位置,然后输出了89这两个字符,占用了45这两个字符的位置。但是因为67这两个字符已经输出,所以仍然显示在那里。

如果字符串是汉字会怎样呢?看下面的程序。

#include <stdio.h>

int main(void)
{
printf("我喜欢用C语言写\\b\\b\\b程序");

return 0;
}
编译运行这段程序,可以看到它的输出是:

我喜欢用C程序写
可见,无论是汉字还是英文字母,\\b的行为是一样的。

那么如果遇到换行符\\n会怎样呢?再看一段程序。

#include <stdio.h>

int main(void)
{
printf("12345\\n67\\b\\b\\b\\b89");

return 0;
}
这段程序在上面第一段程序的基础上,只是在字符6之前加上了换行符\\n。其输出如下:

12345
89
可见,\\b遇到换行符\\n,光标就不会再向前(左)移动了。

总结:\\b的含义是,将光标从当前位置向前(左)移动一个字符(遇到\\n或\\r则停止移动),并从此位置开始输出后面的字符(空字符\\0和换行符\\n除外)。

 
————————————————
版权声明:本文为CSDN博主「码农哈里」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/harryduanchina/article/details/90751355

以上是关于/b的作用的主要内容,如果未能解决你的问题,请参考以下文章

作用域和标识符

/b的作用

这段代码有啥作用? a = (a == b) ?丙:乙; [复制]

等号后面的波浪号有啥作用? [复制]

JavaScript中的作用域 作用域链和闭包

有没有人发现 REGEX "\b" 在 MYSQL 中不起作用?