【C语言】转义字符
慕雪年华

前排提醒,这不算是转义字符的教学
算是个我个人学习的记录

我们先来看下面这个代码

1
2
3
4
5
6
#include <stdio.h>
int main()
{
printf("c:\test\32\test.m");
return 0;
}

问:printf中的c:\test\32\test.m包含几个字符?

大家可以先思考一下这个问题
我们直接数的话,会得出这里面包括了17个字符
如果真的有那么简单也不需要这篇博客了对吧

这里就要引入转义字符的概念了

常用的转义字符有以下几个

image
比较常规的我们可以看表格中的定义

需要注意的是”\?”这个是用于连续问号的情况
??+(某个符号) 称为三字母词
如:??) 显示出来是 ]
\?就让?不被识别为三字母词,而显示问号这个字符
同时\\也是让“\”这个字符能以本身形式出现而不是被识别成转义字符
同时我们要知道的是

“\0”这个转义字符是字符串的结束,在我们输入字符串的时候后面会默认跟着一个隐藏的“\0” (如图)

我们使用strlen计算字符串abc的长度的时候需要在后面-1
同时“\0”也会有自己对应的下标3

image

说回我们的c:\test\32\test.m
通过查表,我们能轻易地发现这里面出现了两个\t转义字符
每个转义字符在数字符长度的时候是记作一个的
除了这两个\t,这里还藏有另外一个转义字符\32
\32这个转义字符正是图表中的\ddd格式的转义字符
代表32是一个八进制数字

而\32在正常代码中 是指

32作为八进制数字对应的十进制数字,在ASCII表上对应的字符。
如:八进制32是十进制的26;
那么\32就代表十进制数26在ASCII码表上对应的符号,查表可知26是替代符号

image

当然,在这里我们的\32只是一个我们想要打印出来的字符,并没有实际作用

所以答案就很明朗了。

1
2
3
4
5
int main()
{
printf("c:\test\32\test.m");
return 0;
}

在这个代码中,(“c:\test\32\test.m“)一共包含的字符数量是13

image

本篇不走心博客到这里也结束了

  • 介绍了部分转义字符的作用
  • 明确在计算字符数量的时候转义字符应视为同一个字符计数

感谢你看到最后
还是求dalao无情指正啊!