0
点赞
收藏
分享

微信扫一扫

复习课10 转义字符的补充与扩展

一.回顾

我们上篇文章主要介绍了转义字符的一些基础用法,如:换行符 \n 、 蜂鸣声 \a、\0 为字符串结束标识

接下来文章将着重介绍转义字符的扩展应用

二. /ddd 与 /xdd 转义字符的使用

ddd 表示1~3个八进制的数字。如:'\130'     ---> X

dd表示2个十六进制数字。如:'\x30'    -----> 0

我们就以转义字符ddd来举一个例子,代码如下:

#include<stdio.h>
int main(void){
printf("%c",'\130');
return 0;
}

当我们运行程序后可以发现程序输出了一个大写的X,如图所示:

复习课10 转义字符的补充与扩展_复习

'\130'这个转义字符的意思是将8进制的数字130换算成10进制,最后再将10进制代表的的数字转换为ASCII码中对应的字符,我们可以使用计算器来验算一下,如图所示:

1.在计算器中输入8进制数字130(程序员模式)

复习课10 转义字符的补充与扩展_转义字符_02

注意:八进制在计算器中显示为OCT,十进制为DEC,十六进制为HEX

2.将其换算成DEC(十进制)数字,这里已经换算好了,结果为88

3.查看ASCII码表,找到十进制数88对应的字符,维基百科上有详细的ASCII码表,这里代表的字符为X(大写)

复习课10 转义字符的补充与扩展_字符串_03

了解完ddd转义字符的意思我们再来看一下xdd转义字符

xdd代表两个十六进制的数字,其中x是固定写在前面的,如 '\x30' 等,与上面类似我们是将 '\x30' 这个十六进制数字转换为十进制数,然后输出该值对应的字符,我们来看下面这段代码:

#include<stdio.h>
int main(void){
	printf("%c",'\x30');
	getchar();
	return 0;
}

我们运行后可以看到程序输出了一个0,我们按照管理打开计算器来进行换算,注意这次需要将计算器的进制调成HEX(十六进制)

复习课10 转义字符的补充与扩展_复习_04

我们可以看到十六进制所对应的十进制值是48,我们再去ASCII码表中去查询就可以发现十进制数48所对应的字符为 0 ,如图所示:

复习课10 转义字符的补充与扩展_ASCII_05

补充说明:'\x63' 与 '\x063' 输出的结果都是一样的 0可以省略不写,同时也需要注意当我们使用数字来表示字符的时候也需要注意ASCII码中的有效值范围:0~127 超出这个界限了就无效了,同时编译器也会报错:

复习课10 转义字符的补充与扩展_C语言_06

三.转义字符扩展试题

我们观察以下代码并思考该程序会输出多少?

#include<stdio.h>
#include<string.h>
int main(void){
	printf("len = %d\n", strlen("abcd efg"));
	getchar();
	return 0;
}

答案是:8 ,我们一个一个数就可以得到答案了前面 a b c d 共占用4个字符,空格(space)键也占用一个字符 随后 e f g 占用3个字符,所以总共是 4 +1 +3 = 8,注意 \0 字符串结束标志并不会被strlen()函数统计

进阶代码:

请问以下代码输出多少:

#include<stdio.h>
#include<string.h>
int main(void){
	printf("len = %d\n", strlen("c:\test\114\test.c"));
	getchar();
	return 0;
}

A.13

B.14

C.15

D.18


答案:A,我们接下来就着重来看这段代码,我们需要努力找出其中暗藏的转义字符,每一个转义字符算作一个字符,首先 \t 为水平制表符,属于转义字符,算作 1 字符,\114 为ddd类型的转义字符算作 1 字符,接下来我们又遇到了 \t 水平制表符,也算作 1 字符,所以除去转移字符一共有10个字符,但是转义字符也是算作 1 字符的,这里有三处转义字符,所以最终答案为:10+3=13,故选A

四.ASCII码表补充

为了方便不能访问维基百科的朋友,我将ASCII码表截图下来,感兴趣或者有需要的时候可以看看:

复习课10 转义字符的补充与扩展_转义字符_07

复习课10 转义字符的补充与扩展_字符串_08

复习课10 转义字符的补充与扩展_C语言_09

                                                                                                                   2023/9/23

                                                                                                                          王起舟


举报

相关推荐

0 条评论