ASCLL码值的使用使c语言中用,使得仅使用整数就可用在计算机上各种字符(包括各国的语言文字,符号),可是一些代表行为的ASCLL字符却无法打印出来(如:退格、换行、终端响铃之类的)。这里有两种方法:
1.使用ASCLL码值
如蜂鸣的ASCLL值是7.
char beep = 7;
#include <iostream>
int main(int argc, const char * argv[]) {char beep = 7;printf("%c",beep);return 0;
}
成功了
2.使用一些特殊的符号序列表示一些特殊的字符。这些符号序列叫做转义序列(escape sequence)
转义序列 | 含义 |
---|---|
\a | 警报(ANSI C) |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ | 反斜杠(\) |
’ | 单引号 |
" | 双引号 |
\? | 问号 |
\0oo | 八进制值(oo代表有效的八进制数,即代表0~7) |
\xhh | 十六进制值(hh代表有效的八进制数,即代表0~15) |
注意的是警报字符(\a)是否能产生听到或看到的警报,取决于计算机的硬件(比如我的mbp就没有声音。。。。。)
\b
这里并没有搞懂 \b 的作用,在百度中找的内容是
C++中,\b是退格的意思,相当于你按了回退键Backspace。
\b代表退格但是按下退格键不一样,他只是移动当前的光标向前移动一位。比如输出"asdf\b\b"那么你看到的任然是asdf但是光标在倒数第二个字符上,但是如果你继续输出字符接下来的字符就会从倒数第二个字符开始覆盖,"asdf\b\bc"输出的是ascf因为倒数第二个字符被覆盖但是倒数第一个未被覆盖。
还有
C语言中的反斜杠b(\b)是将输出的定位前移一个字符的意思(可以在输出中删除刚输出的一个字符)。例如:printf(“abcde”); printf("\bABCD\n"); 后,实际的输出为abcdABCD(后输出的A把e覆盖了)。
我试验了一下
还有待考究
\f
C语言 \f 走纸换页是针对打印机输出时的命令符,表示按当前打印机的设置跳过一页纸,换到下页。
\n
区别是显而易见的
\r
感觉和换行差不多。。。
百度了一下
\n:回车+换行
\r:回车
简单来说,就是\n把光标转到下一行行首,\r把光标转到当前行行首
\t
不够理解
\t就是tab,指的是制表位,其实可以这么理解——
位空空空位空空空位空空空位空空空位空空空位空空空位空空空
1和5还有9…这些就是制表位,按了tab后自然就会对其到1、5、9这些格子
假设已有2个字符,按一下tab,就移动到了第5个位置上,有3个字符,按一下tab,仍然是移动到第5个位置上…
如果按2下tab,很明显,上面两者都会移动到第9个格子上
但有些SHELL定义的制表符不是4个字符,而是8个…所以就变成这样
位空空空空空空空位空空空空空空空位空空空空空空空
很明显,按一下tab感觉距离“变长了”
——因此,之所以说是制表位,顾名思义就是对对齐方便做成表格
\v