【第九章】转义字符

目录

一、概述

二、分类

2.1 n的转义字符

2.2 0的转义字符

2.3 \?

2.4 引号的转义字符

2.5 水平制表符

2.6 警告字符

2.7 换行字符

2.8 水平制表符

2.9 八进制的转义字符

2.10 十六进制的转义字符

 三、ASCII码表

四、练习

4.1 笔试题

4.2 求字符串的长度


转义字符:转变原来那个字符的意思。

一、概述

不是什么都能转义的。

这里就不得不提一下转义字符了。

转义字符顾名思义就是转变意思。

下面看一些转义字符:

考题:

二、分类

2.1 n的转义字符

#include <stdio.h>
int main()
{
	printf("abc\n");//abc  把原来普通含义n转变一下
	printf("abcn");//abcn   
	return 0;
}

2.2 0的转义字符

打印:

加入我们要在屏幕上打印一个目录: c:\code\test.c

我们该如何写代码?

#include <stdio.h>
int main()
{
 printf("c:\code\test.c\n");
    return 0;
}

实际上程序运行的结果是这样的:

2.3 \?

现在三字母词已经很少了,现在基本都不支持三字母词了。

早期才有三字母词,例如:VC++6.0版本。

特殊的转义字符:早期的C语言中叫做三字母词  用VC++6.0老的版本才有
??)        ]

printf("(Are you OK??)");  //(Are you OK]
printf("(Are you OK\?\?)\n");  //(Are you OK\?\?)

2.4 引号的转义字符

	printf("%c\n",'w');
	//printf("%c\n",'''); 前两个单引号是一对,最后一个单着,没法解析,报错
	printf("%c\n", '\''); //使用转义字符
#include <stdio.h>
int main()
{
    //问题1:在屏幕上打印一个单引号',怎么做?
    //问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
    printf("%c\n", '\'');
    printf("%s\n", "\"");
    return 0;
}

打印字符串有两种形式:

#include <stdio.h>
//库函数的引用,得引用头文件
#include <string.h>
int main()
{
	//第一种(简化版):直接打印
	printf("abcdef");
	//第二种:指定格式进行打印
	printf("%s\n","abcdef");
	return 0;
}

 只有字符串可以这样简化打印,整型是不可以的。

	printf("ab\0cn\n");
	printf("ab\n\\0cn\n");
    

	printf("abcd\n");
	printf("%s\n","abcd");
	//printf(120); 报错

2.5 水平制表符

注意:路径打印时,一定是两个\

#include <stdio.h>
int main() {
	printf("%s\n","c:\test\test\.c");//c:      est     est.c
	printf("%s\n","c:\\test\\test\.c");//c:\test\test.c
    printf("c:\\test\\test.cpp");//路径打印
	return 0;
}

2.6 警告字符

	printf("\a");//警告:触发电脑的一个蜂鸣
	printf("\a\a\a\a\a\a\a\a\a");//多个也警告一个,响一次
	printf("%c\n",'\130');//X

2.7 换行字符

#include <stdio.h>
int main() {
	printf("%s\n","ab\ncd\nef");//
	return 0;
}

2.8 水平制表符

和Tab键一样的功能。

	printf("abc\ndef");
	printf("%d",strlen("c:\test\041\test.c"));//13
	//	\t --tab --水平制表符

编译运行快捷键:Ctrl+Fn+F5

2.9 八进制的转义字符

八进制表示:

int main() {

	printf("%c\n",'\x60');//`
	// 没意义了,超过饿了ASCII的范围
	printf("%c\n",'\x0060');//`
	return 0;
}

计算机在内存中存储是二进制:

2.10 十六进制的转义字符

打印c:

注意:转义出的字符,范围一定要在ASCII范围内(0~127之间),才是有意义的。

超出该范围,毫无意义。

考题:

#include <stdio.h>
#include <string.h>
int main() {
	//	\041 -- \ddd --d表示8进制数字
	//	041转换为十进制是33
	//	33在ASCII中代表的字符是!
	printf("%c\n",'\041');

	int a = 10;
	//sizeof是操作符,不是函数
	printf("%d\n",sizeof(int));//4
	printf("%d\n",sizeof(a));//4
	printf("%d\n", sizeof a);//4
	printf("%d\n",100);//100
	printf("%c\n", 100);//d 100转换为ASCII值是d
	printf("%s\n","abcdef");//abcdef
	int b = 10;
	printf("%p\n",&b);//009dfd54
	printf("%x\n",&b);//9dfd54
    printf("%c\n",\x063);//这是一个字符
	return 0;
}

 三、ASCII码表

四、练习

4.1 笔试题

//程序输出什么?
#include <stdio.h>
int main()
{
    printf("%d\n", strlen("abcdef"));//6
    // \62被解析成一个转义字符
    printf("%d\n", strlen("c:\test\628\test.c"));
    return 0;
}

程序输出什么?

#include <stdio.h>
int main()
{
	printf("%d\n", strlen("abcdef"));//6
	// \62被解析成一个转义字符
	printf("%d\n", strlen("c:\test\628\test.c"));//14
	return 0;
}

4.2 求字符串的长度

#include <stdio.h>
int main()
{
	printf("%d\n", strlen("c:\test\121\0"));//7  \0不算字符串内容
	printf("%d\n",strlen("c:\test\121"));//7
	return 0;
}
#include <stdio.h>
int main()
{
	int a = 0x7b;
	int b = 0173;//八进制以0开头
	int c = 123;
	float arr[] = {3e3,3e-3};
	printf("a = %d b = %d c = %d\n",a,b,c);//a = 123 b = 123 c = 123
	printf("3e3 = %f 3e-3 = %f\n",arr[0],arr[1]);
	//3e3 = 3000.000000 3e-3 = 0.003000
	//e代表的是10的幂次  不能随便乱写
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李在进步er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值