程序中 不可打印字符
不可打印字符(Nonprinting Characters)
有些ASCII 字符是不可打印的。例如退格、另起一行、警报等。C语言提供了两种方法来表示这种不可打印字符。
第一种方法是使用ASCII 编码。例如,ASCII 编码中,7 用于表示警报:
char beep = 7;
第二种方法是使用特殊符号序列,也就是所谓的转义字符escapesequences)。参见下表:
转义字符 |
含义 |
\a | 警报(Alert (ANSI C) ) |
\b | 退格(Backspace) |
\f | 换页(Formfeed) |
\n | 换行(Newline) |
\r | 回车(Carriagereturn) |
\t | 水平制表符(Horizontaltab) |
\v | 垂直制表符(Verticaltab) |
\\ | 反斜杆(Backslash (\) ) |
\' | 单引号(Single quote (') ) |
\" | 双引号(Double quote (") ) |
\? | 问号(Question mark (?) ) |
\0oo | 八进制数(Octal value (o 代表一个八进制数字) ) |
\xhh | 十六进制数(Hexadecimal value (h 代表一个十六进制数字) ) |
给变量赋值的时候,转义字符必须使用单引号引住。例如:
char nl = '\n';
下面我们详细学习每个转移字符的含义。
\a(警报)是ANSI C89 添加的,用于产生可听或者可视的警报。\a产生的效果取决于硬件。一般来说,输出\a 会产生鸣响。但是在某些系统,输出\a 不会产生任何效果,或者仅仅显示一个特殊字符。标准明确指出,\a 不应该改变当前活跃位置(activeposition)。所谓活跃位置,是指显示设备(显示器、打字机、打印机等等)显示下一个字符的位置。以显示器为例,活跃位置就是指光标所处的位置,输出\a 不会导致光标移动位置。
\b、\f、\n、\r、\t,以及 \v 都是输出设备控制符。退格符(\b)使当前行的活跃位置后退一个位置。换页符(\f)使活跃位置跳到下一页的开端。注:换页符可用于控制打印机换页,但不会导致PC 机的显示屏换页。换行符(\n)使活跃位置跳到下一行的开端。回车符( \r )使活跃位置返回当前行的开端。水平制表符(\t)使活跃位置移动若干个位置(通常是8个)。垂直制表符(\v)使活跃位置换若干行。注:\v可用于控制打印机换若干行,但是不会导致PC机的显示屏换行。
\\、\',以及 \" 使我们可以把 \,' 和 " 用作字符常量。如果要打印以下句子:
"\ iscalled 'backslash'."
我们需要使用如下语句:
printf("\"\\is called \'backslash\'.\"");
\0oo 和 \xhh 是ASCII码的两种特殊表示形式。如果想用八进制ASCII码表示字符,可以在八进制数前面加上 \ ,然后用单引号引起来。例如:
beep ='\007';
打头的那些0可以省略,也就是说,写成'\07' 或者 '\7' 都一样。无论有没有打头的0 ,7 都会被当成八进制数处理。
从C89 开始,C提供了用十六进制表示字符常量的方法:在反斜杆后面写一个 x ,然后再写 1 到 3个十六进制数字。例如
nl ='\xa';
注意:使用ASCII码时,要注意区分数字4的ASCII码是52,'4' 代表字符 4 ,而不是数字4。此外,尽管 '\n' 和 '\xa' ,'\a' 和 '\007'是等价的,但是我们应该尽可能使用 '\n' 和 '\a' ,而不要用 '\xa' 和 '\007'。这是因为前者易懂、便于记忆,而且移植性更高。而后者只对使用ASCII码的系统有效。和数字字符。
文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。
原文链接:czhenya.blog.csdn.net/article/details/76091259
- 点赞
- 收藏
- 关注作者
评论(0)