C语言中的转义字符详解
简介
字符嘛,一般在键盘上键入后,可直接显示的字符成为可显示字符。
但是有一部分字符,在键盘上没有与之相对应的一个键,这种字符大多是为控制作用而设计的,称为控制字符。如果要键入控制字符,就需要使用转义字符表示。就是使用以”\”开头的字符。
转义字符
在c语言中,转义字符种类其实不多,大概有这些:
-
\a → 响铃
-
\f → 换页
-
\n → 换行
-
\0 → 字符串结束标识
-
\r → 回车(回到当前行的行首)
-
\b → 退格
-
\t → 水平制表
-
\v → 垂直制表
其中前几个都没什么好说的。值得一提的是,\b的意义是退格,意思是将光标移至上一个单位前,例如在printf("123\b45");
后会打印1245,但是在printf("12345\b");
时,依旧会打印12345.因为\b仅仅时将光标从3后面移到了3的前面,在第一个输出函数后,接着又打印了45,3就被覆盖掉了,所以看起来就像删除一样,但是将\b放在最后时,因为仅仅移动了光标后没有进行任何操作,看起来就像没有删除一样。例如如下代码:
char a = 'a', b = 'b', c = 'c';
printf("%c %c %c\n",a,b,c);
printf("%c%c\b%c\n",a,b,c);
printf("%c%c%c\b\n", a, b, c);
printf("123\b45");
运行结果如下:
且后面的\v为垂直制表,意义是换行后对齐文本位置输入。就像表格一样。但是在命令行窗口中是没有用的,一般只有用于文本编辑。\t是水平制表,表现为按下一个Tab,就像一个长空格;其实在文本中,空格也算是一个字符的,tab键才是我们平常理解下的空格。
打印转印字符
我们可能在写代码的时候,遇到一些我们原本不想使用转义字符的时候,但是系统辨别为了转义字符;例如我们想打印:D:\data\text\main.c 这时候我们就会发现打印会变成D:data extmain.c 这时候需要多加一个反斜杠才能打印斜杠,同理 如果我们想打印转义字符,则需要多打一个反斜杠例如我们想打印\n, 则需要输入\n 这时候前面两个反斜杠会被判定为打印一个反斜杠字符,就不会和后面的字符关联组成转义字符了。所以我们的代码应该改成:
`printf(“D:\data\text\main.c”);
输出如下:
其他的转义字符
在c语言中,所有的字符都可以使用’'+ASCII码值来表示。
- ‘\x’+十六进制数dd
- ‘\’+八进制数ddd
其中dd表示可以使用的位数,如果超出就会导致打印字符出错,如a的ASCII码值为97,则可以使用:
printf("\x61");
printf("\141");
打印结果如下:
在这里要注意,不能输入十进制数,同时并不是每一个八进制数或十六位进制数都可以通过这样的方式转换为字符。 因为我们所认识的ASCII码值是由十进制表示的。但是部分八进制或十六进制数转换为十进制数时会有小数部分。这部分八进制数和十六进制数是不能转换为字符的。