非打印字符
ASCLL碼值的使用使c語(yǔ)言中用,使得僅使用整數(shù)就可用在計(jì)算機(jī)上各種字符(包括各國(guó)的語(yǔ)言文字,符號(hào)),可是一些代表行為的ASCLL字符卻無(wú)法打印出來(lái)(如:退格、換行、終端響鈴之類的)。這里有兩種方法:
1.使用ASCLL碼值
如蜂鳴的ASCLL值是7.
char beep = 7;
成功了
2.使用一些特殊的符號(hào)序列表示一些特殊的字符。這些符號(hào)序列叫做轉(zhuǎn)義序列(escape sequence)
| \a | 警報(bào)(ANSI C) |
| \b | 退格 |
| \f | 換頁(yè) |
| \n | 換行 |
| \r | 回車 |
| \t | 水平制表符 |
| \v | 垂直制表符 |
| \ | 反斜杠(\) |
| ’ | 單引號(hào) |
| " | 雙引號(hào) |
| \? | 問(wèn)號(hào) |
| \0oo | 八進(jìn)制值(oo代表有效的八進(jìn)制數(shù),即代表0~7) |
| \xhh | 十六進(jìn)制值(hh代表有效的八進(jìn)制數(shù),即代表0~15) |
注意的是警報(bào)字符(\a)是否能產(chǎn)生聽(tīng)到或看到的警報(bào),取決于計(jì)算機(jī)的硬件(比如我的mbp就沒(méi)有聲音。。。。。)
\b
這里并沒(méi)有搞懂 \b 的作用,在百度中找的內(nèi)容是
C++中,\b是退格的意思,相當(dāng)于你按了回退鍵Backspace。
\b代表退格但是按下退格鍵不一樣,他只是移動(dòng)當(dāng)前的光標(biāo)向前移動(dòng)一位。比如輸出"asdf\b\b"那么你看到的任然是asdf但是光標(biāo)在倒數(shù)第二個(gè)字符上,但是如果你繼續(xù)輸出字符接下來(lái)的字符就會(huì)從倒數(shù)第二個(gè)字符開(kāi)始覆蓋,"asdf\b\bc"輸出的是ascf因?yàn)榈箶?shù)第二個(gè)字符被覆蓋但是倒數(shù)第一個(gè)未被覆蓋。
還有
C語(yǔ)言中的反斜杠b(\b)是將輸出的定位前移一個(gè)字符的意思(可以在輸出中刪除剛輸出的一個(gè)字符)。例如:printf(“abcde”); printf("\bABCD\n"); 后,實(shí)際的輸出為abcdABCD(后輸出的A把e覆蓋了)。
我試驗(yàn)了一下
還有待考究
\f
C語(yǔ)言 \f 走紙換頁(yè)是針對(duì)打印機(jī)輸出時(shí)的命令符,表示按當(dāng)前打印機(jī)的設(shè)置跳過(guò)一頁(yè)紙,換到下頁(yè)。
\n
區(qū)別是顯而易見(jiàn)的
\r
感覺(jué)和換行差不多。。。
百度了一下
\n:回車+換行
\r:回車
簡(jiǎn)單來(lái)說(shuō),就是\n把光標(biāo)轉(zhuǎn)到下一行行首,\r把光標(biāo)轉(zhuǎn)到當(dāng)前行行首
\t
不夠理解
\t就是tab,指的是制表位,其實(shí)可以這么理解——
位空空空位空空空位空空空位空空空位空空空位空空空位空空空
1和5還有9…這些就是制表位,按了tab后自然就會(huì)對(duì)其到1、5、9這些格子
假設(shè)已有2個(gè)字符,按一下tab,就移動(dòng)到了第5個(gè)位置上,有3個(gè)字符,按一下tab,仍然是移動(dòng)到第5個(gè)位置上…
如果按2下tab,很明顯,上面兩者都會(huì)移動(dòng)到第9個(gè)格子上
但有些SHELL定義的制表符不是4個(gè)字符,而是8個(gè)…所以就變成這樣
位空空空空空空空位空空空空空空空位空空空空空空空
很明顯,按一下tab感覺(jué)距離“變長(zhǎng)了”
——因此,之所以說(shuō)是制表位,顧名思義就是對(duì)對(duì)齊方便做成表格
\v
總結(jié)
- 上一篇: linux的基础知识——协议和网络应用程
- 下一篇: 【计算机网络复习】1.1.4 时延、时延