当前位置:网站首页>strlen 转义字符
strlen 转义字符
2022-08-04 05:31:00 【crazy__xieyi】
1、
题目如下
1 2 3 4 5 |
|
先不说结果如何,我们看看s[]在内存中的结构:

很清楚,char[13]数组大小为13,答案似乎是B,很不幸错了,strlen返回的长度不包括结尾空白符,答案为A 12。
‘\’为转义符,转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。
下图为转义字符表:
char s[] = “\\123456\123456\t”;中的\\相对于一个字符\,\123中,1,2,3都满足8进制数,因此\123其实表示一个字符。那么我现在看看为什么内存中显示char s[7] = ‘S’,即\123的值为‘S’??
\ddd 斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制ASCII码值。八进制123换算成十进制 = 1*8*8 + 2*8 + 3 = 83,由ASCII可以看出‘S’对于十进制83,八进制为123。
\x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制ASCII码值。
那么知道了上面的解答,下面一些情况看是怎么样的?
1 2 3 4 5 |
|
*这里有个小小的区别:\ddd 只计算后面3位八进制,而\x会把后面所有的位都计算!
1 2 3 4 5 6 7 8 9 10 |
|
(以上程序都在win32,vs2010下测试,不知道到其它环境会不会有区别,如果有,烦请告知,谢谢)
ASCII字符表:

2、
在VC6.0环境或者linux GCC 下
char string[]="ab\01";
printf("%d",strlen(string));
答案是:3
char string[]="ab\012";
printf("%d",strlen(string));
答案是:3
char string[]="ab\0123";
printf("%d",strlen(string));
答案是:4
char string[]="ab\01a";
printf("%d",strlen(string));
答案是:4
char string[]="ab\0a1";
printf("%d",strlen(string));
答案是:2
char string[]="ab\0abc";
printf("%d",strlen(string));
答案是:2
问题回归:
转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符:
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
\n 换行(LF) 010
\r 回车(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意字符 三位八进制
\xhh 任意字符 二位十六进制
上面程序测试中出现‘\0’,如果后面紧跟的是小于8的数字,那编译器就认为它是八进制数(\ddd 任意字符 三位八进制),算一个字符;如果紧跟的是字符,则'\0'表示空字符。这样,才会导致上述结果出现。
边栏推荐
- Deep Learning Theory - Initialization, Parameter Adjustment
- 结构体内存对齐-C语言
- LeetCode_Dec_2nd_Week
- [开发杂项][调试]debug into kernel
- 深度学习理论 —— 初始化、参数调节
- No matching function for call to 'RCTBridgeModuleNameForClass'
- MVC自定义配置
- Introduction to Convolutional Neural Networks
- An abstract class, internal classes and interfaces
- C语言无符号整型运算
猜你喜欢

Install Minikube Cluster in AWS-EC2

Brief description of database and common operation guide

CSDN spree -- college round table spree

中国联通、欧莱雅和钉钉都在争相打造的秘密武器?虚拟IP未来还有怎样的可能

MNIST手写数字识别 —— 从二分类到十分类

arm learning-1-development board

Cut the hit pro subtitles export of essays

集合---ArrayList的底层

Copy Siege Lion's Annual "Battle" | Review 2020

位段-C语言
随机推荐
Deep Learning Theory - Initialization, Parameter Adjustment
【Copy攻城狮日志】“一分钟”跑通MindSpore的LeNet模型
集合--LinkedList
深度确定性策略梯度(DDPG)
[日常办公][shell]常用代码段
浅谈外挂常识和如何防御
Unity ML-agents 参数设置解明
MOOSE平台使用入门攻略——如何运行官方教程的例子
[Development miscellaneous][Debug]debug into kernel
target has libraries with conflicting names: libcrypto.a and libssl.a.
ideal life
Copy攻城狮信手”粘“来 AI 对对联
MNIST Handwritten Digit Recognition - From Perceptrons to Convolutional Neural Networks
LeetCode_Nov_5th_Week
结构体内存对齐-C语言
Copy攻城狮的年度之“战”|回顾2020
卷积神经网络入门详解
The Unity of ML - agents interpret parameter Settings
深度学习,“粮草”先行--浅谈数据集获取之道
详解近端策略优化