C语言——转义字符
转义字符
目录
一、转义字符
二、举例(各种转义字符+判断字符个数)
一、转义字符
1.1转义字符 及其 含义
转义字符 | 含义 |
n | 换行 |
r |
回车 |
b | 退格符 |
f | 进纸符(就是换页,将后面的文本打印到一张新纸) //不常用 |
a | 警告字符,电脑响铃 |
t | 水平制表符 |
v | 垂直制表符 //不常用 |
' | 用于表示一个字符常量 ' |
" | 用于表示字符串内部的双引号 |
\ | 用于表示一个反斜杠(防止被解释成一个转义字符) |
? | 用于表示一个问号?(要输出连续多个问号时使用,防止被解释成三字母词)*① |
表示空字符 | |
ddd | ddd表示1~3个八进制数字 |
xdd | dd表示2个十六进制数字 |
*① ANSI C标准中,定义了9个三字母词,(如"??)"直接printf后会变成"]").但是不同编译器对ANSI C的支持不一样,我用的VS2022就不支持三字母词,栗子如下:
二、举例(各种转义字符+判断字符个数)
2.1 转义字符举例
①n和r
n:
#include <stdio.h>
int main()
{
printf("InlovenChinan");
return 0;
}
调试结果: I
love
China
→ 每写一个n,接下来的内容换到下一行
r:
#include <stdio.h>
int main()
{
printf("InloverChinan");
return 0;
}
调试结果:I
China
→r 的“回车”跟咱们平时说的“回车”不同,平时说的回车相当于这里的换行,而 r 则是让光标返回到本行最开始的位置,如果后面继续输入字符,会逐个覆盖本行原来的字符
②b:作用相当于键盘上的Backspace键,显示的时候光标退回前一个字符,但不会删除这个字符,but如果后边有新的字符,新的字符会覆盖退回的那个字符
#include <stdio.h>
int main()
{
printf("abcdbe");
return 0;
}
调试结果:acbe
③t: 水平制表符,相当于键盘上的Tab键
④ddd和xdd:
以ddd为例,ddd表示3个八进制数字(比如:007,072,114(无意义的0可省略)),把这个数字转换成十进制数字,输出即为这个十进制数字对应ASCII码值。
同理,对于xdd,x是固定的格式,dd表示2个十六进制数字,把这个数字转换成十进制数字,输出即为这个十进制数字对应ASCII码值。
#include <stdio.h>
int main()
{
printf("41 ");
printf("73 ");
printf("114 n");
printf("x31 ");
printf("x52 ");
return 0;
}
输出为:
因为第一组三个八进制数字分别对应十进制:33、59、76
第二组两个十六进制数字分别对应十进制:49、82
对照ASCII码表,
是不是非常显然了呢
2.2 判断字符个数
①
#include <stdio.h>
int main()
{
printf("helloabtn");
return 0;
}
字符数为9,因为a、t、n都是转义字符,当作一个字符来看
②进制-陷阱1
#include <stdio.h>
int main()
{
printf("??as:629test");
return 0;
}
字符数为11,这里要注意的是629不是一个转义字符,因为“ddd”规定的d是八进制数字,而八进制数字每一位只包含0~7中的一个数字,因此629是两个字符:“62”、“9”
③进制-陷阱2
#include <stdio.h>
int main()
{
printf("??as:651test");
return 0;
}
debug时会报错,因为651对应十进制425,超过了ASCII码表的范围(0~127)