适合初学者的C语言转义字符讲解
什么是转义字符
今天我们来了解一下转义字符,转义字符顾名思义就是转变意思。
现在了解一下这些字符:
转义字符 释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量'
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\xdd dd表示2个十六进制数字。 如: \x30 0
为什么要使用这些转义字符
我们来说一下三字母词(过去有,现在使用的编译器不使用它了,所以就演示不了了),如果我们要打印一些字符,比如??)
,在三字母词中它对应的符号是]
??) --> ]
??( --> [
表示的是你本来想要打印的是??)
这三个符号,但是在编译器看来,它们是]
,所以它会给你打印出],而不是??)
那么你就想要打印出 ??)
怎么办呢?
我们只需要把??)
前加一个 \
即
\?\?)
//转义字符 \?
它可以让?
变成不是三字母词中的?
,让它老老实实的就是一个?
,所以编译器就不会打印出 ]
三字母词实在是太古老了,但是这个语法不能消失,所以我们一直都在使用转义字符
这里总结一下我们打印所用到的格式
//%d - 打印整型
//%c - 打印字符
//%s - 打印字符串
//%f - 打印float类型的数据
//%lf - 打印double类型的数据
//%zu - 打印sizeof的返回值
如果我们要打印一个字符,如下:
#include<stdio.h>
int main()
{
printf("%c",'''); //我们来打印'
return 0;
}
运行结果:
出现了错误
那么出错的原因是什么?
我们来看这 '''
,printf识别的时候,识别第一个 '
,然后再识别一个 '
,哎,到这里就结束了,就像识别这个字符一样'w'
,只要识别到一对儿'
,打印就会结束,但是后面还有第三个 '
是多余的,就出错了
那么,我们使用转义字符 \'
,让'
不再是一对儿'w'
里面的'
,就像上面的??)
一样
验证一下:
#include<stdio.h>
int main()
{
printf("%c",'\''); //我们来打印'
return 0;
}
//转义字符 \'
运行的结果:
再来继续了解转义字符
我们打印字符串有两个形式:
#include<stdio.h>
int main()
{
printf("%s\n","abcdef"); //形式一
printf("abcdef"); //形式二
return 0;
}
第二种形式不能直接像下面这样打印:
printf(2123456)//错误的
如果我们在abcdef
中间加一个\0
,但因为它代表的是换行,所以我们需要让它失效,让\0
就是\0
,没有其他含义,只需要这样就可以了:
#include<stdio.h>
int main()
{
printf("%s\n","abc\\0def"); //形式一
printf("abc\\0def"); //形式二
return 0;
}
//转义字符 \\
上面那个表里的转义字符都是这样子来使用的
来练习一个题
#include <stdio.h>
#include <string.h>
int main()
{
printf("%d\n", strlen("c:\test\121"))
return 0;
}
它的输出结果是什么?
答案解析:
strlen:获取字符串的有效长度,不包括’\0’
“c:\test\121”: 在该字符串中,\t是转移字符,水平制表,跳到下一个tab的位置;而\121表示一个字符,是讲121看做8进制数组,转换为10进制后的81,作业为ASCII码值的字符,即:字符’Q’ ,故上述字符串实际为:“c: esty”,只有7个有效字符
如果我们真的要打印c:\test\121
,需要变成c:\\test\\121
,这样就可以把c:\test\121
给打印出来
关于转义字符,我们只需要记住特殊的就行,没有必要全部记忆,我们以后是会用到一些的
到此这篇关于适合初学者的C语言转义字符讲解的文章就介绍到这了,更多相关C语言 转义字符内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341