转义字符

  • 一、什么是转义字符
  • 二、简单转义字符
    • 1、空字符
    • 2、警报符
    • 3、退格符
    • 4、换页符
    • 5、换行符
    • 6、回车符
    • 7、水平制表符
    • 8、垂直制表符
    • 9、反斜杠字符
    • 10、问号字符
    • 11、单引号字符和双引号字符
  • 三 、八进制转义字符
  • 四、十六进制转义字符
  • 五、总结

一、什么是转义字符

转义字符(Escape character),所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C语言中定义了一些字母前加””来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符;在平常的代码编写中,printf函数经常会用到。
转义字符虽然由两个及两个以上的字符构成,但它表示的却是单个字符
简单转义字符(Simple escape sequence)

转义字符含义说明
\0空字符(NULL在c语言中代表“字符串结束符”
\a警报符(alert)发出听觉或视觉上的警报
\b退格符(backspace)将当前位置移到前一列
\f换页符(form feed)换页,将当前位置移到下一页开头
\n换行符(new line)换行,将当前位置移到下一行开头
\r回车符(carriage return)将当前位置移到本行开头
\t水平制表符(horizontal tab)将当前位置移动到下一个水平制表位置
\v垂直制表符(vertical tab)将当前位置移动到下一个垂直制表位置
\\字符\
\” />

4、换页符

换页符\f
输出换页符\f后,当前的显示位置就会移动到下一个逻辑页面的开头位置
但在控制台面板中,即使你使用换页符输出,也不会发生任何事情(会多一个空行,肉眼看不见)。
比如:

#include int main() {    printf("你好\f");    return 0;}

效果和不输入换页符输出也是一样的。
实际在打印输出需要换页时才会用到换页符

5、换行符

换行符\n
换行符是我们在学习C语言过程中可能经常会用到的转义字符,
输入换行符后,当前显示位置就会移动到下一行的开头
比如:

#include int main() {    printf("你好\n");    printf("\n");    printf("程序员");    return 0;}

输出结果:

你好程序员

6、回车符

换行符\r
输出回车符\r后,当前显示位置就会移动到本行开头,灵活应用回车符,我们就能重写已经在画面上显示出来的字符。回车符(‘\r’)和换行符(‘\n’)都是c语言中的一种语言表达方式,前者的作用是输入完一行内容后光标回到当前行的开头却不向下移一行,而后者的作用是跳到下一个新行,输入完一行内容后光标下移一行却不会移到这一行的开头。
我们以下面代码为例:

#include #include int main(){    printf("你是谁");    fflush(stdout);//清空缓冲    Sleep(2000);//间隔两秒    printf("\r程序员");    return 0;}

效果:

你是谁

两秒后

程序员

可以看到这段代码可以直接清除本行(调用了fflush)再重新输出,而回车符的作用则是把光标重定位到开头,达到辅助效果;但在这里需要注意的是,如果新输出的字符串比原先显示的字符串短,那么原先显示的字符就不会消失,始终留在原位。
比如:

#include #include int main(){    printf("你是谁");    fflush(stdout);    Sleep(2000);    printf("\r程序");    return 0;}

则输出是:

你是谁

两秒后

程序谁

7、水平制表符

水平制表符\t
输出水平制表符\t后,当前显示位置就会移动到本行的下一个水平制表位置
没有规定当前位置位于或超过本行最后的水平制表位置时程序该如何运作,
水平制表位置要取决于操作系统的环境,
有些环境把水平制表位置设定在每行开头8位的地方,
还有些环境把水平制表位置设定在距每行开头4位的地方。
如下面代码所示:

#includevoid main() {printf("1234567812345678\n"); printf("\ta\n");                    printf("1234\ta\n");                           printf("12345678\ta\n");             return 0;}

输出结果:

在这段代码中,我们可以很好的观察到,在我的操作系统中,一个水平制表位是8个空格

8、垂直制表符

垂直制表符\v
输出垂直制表符\v后,当前显示位置就会移动到下一个垂直制表位置中最开始的位置
没有规定当前位置位于或超过本行最后的垂直制表位置时程序该如何运作。
如下面代码所示:

#includevoid main() {printf("123\v456"); return 0;}

理论效果:

123   456

为什么说是理论效果,因为在控制台输出的时候只会有换行效果(手动滑稽)
垂直制表符\v和换页符 f一样,都主要在打印输出时使用

9、反斜杠字符

反斜杠表符 \\
我们用转义字符\\来表示反斜杠字符\
别问为什么,一个输出不了,转义字符用它定义,输出自己当然得再加一个嘛
这个没什么好讲的。。。

10、问号字符

问号字符 \” /> (这单双引号快给我搞吐了)
这个原理有点像上面的反斜杠,因为本身和printf函数里的双引号冲突
比如下面代码:

#includevoid main() {printf("关于字符串常量和字符常量。\n");printf("双引号"); putchar('"');printf("\n");printf("用双引号括起来的\"123\"是字符串常量。\n");//双引号的体现printf("单引号"); putchar('\'');printf("\n");printf("用单引号括起来的'1'是字符常量。\n");//单引号的体现return 0;}

输出结果:

关于字符串常量和字符常量。双引号"用双引号括起来的"123"是字符串常量。单引号'用单引号括起来的'1'是字符常量。

三 、八进制转义字符

八进制转义字符\ddd
八进制转义字符的格式就是\ddd(有些书上是\ooo,这个字母本身替代的是八进制数,所以用什么字母替代不重要),d的范围是0~7,用1到3位八进制数来表示。
举个例子:

#includevoid main() {printf("%c\n", '\141');printf("%d", '\141');return 0;}

输出结果是

a97

第一个打印输出函数调用的是单个字符格式化符号,在ASCII中八进制数141是字母a;
第二个打印输出函数调用的是十进制整型数据格式化符号,八进制数141转为十进制数就是97。

四、十六进制转义字符

十六进制转义字符\xhh
十六进制转义字符的格式是\xhh(和八进制转义字符描述类似)
\x是固定的,h的范围是0-F,用任意位数的十六进制数来表示。
举个例子:

#includevoid main() {printf("%c\n", '\x2B');printf("%d", '\x2B');return 0;}

输出结果是

+43

第一个打印输出函数调用的是单个字符格式化符号,在ASCII中十六进制数2B是字符+;
第二个打印输出函数调用的是十进制整型数据格式化符号,十六进制数2B转为十进制数就是43。

ASCII表对应可以看这:ASCII码一览表

使用八进制和十六进制转义字符的时候一定要注意它的值的范围,它们的本质是表示那些不能显示的ASCII字符,标准ASCII码表码值的最大值为127,拓展ASCII码表码值的最大值到255.当转义字符的表示值过大时,此时的转义字符就没有实际的意义了。

五、总结

这就是所有的转义字符的介绍了,文章有些专业术语介绍来自《明解C语言中级篇》,作者也非常推荐大家看这本书,非常适合小白入门C语言。

制作不易,看了这么多,给个一键三连呦!
如有不正之处,敬请指出,感谢你的来访!!!

Copyright © maxssl.com 版权所有 浙ICP备2022011180号