转义字符 & sizeof & strlen
在定义了数组大小时:
sizeof是运算符,表示编译时分配的空间大小,即数组定义的大小,char t[20] = "sfa"。sizeof: 20; strlen: 3.
在未定义数组大小时:
sizeof根据实际位数确定,注意字符串隐藏的\0也算一位,。
eg:1
char s[] = "a\128\\\tcb\xdg\n";
sizeof计算s大小时,为11位:a \12 8 \\ \t c b \xd g \n \0
strlen计算s大小时,为10位:strlen计算字符串长度时遇\0结束,但大小计算不包括\0
eg:2
char a[] = "a0\0a0\0";
sizeof(a)大小为7,即:a 0 \0 a 0 \0 \0
strlen(a)大小为2
char s[] = "a\128\\\tcb\xdg\n"; 打印字符数组s:转义字符:
\yyy : 1~3位八进制数所代表的任意字符,其中y的范围是0~7
\xyy : 1~2位十六进制所代表的任意字符,其中y的范围是0~F
for (int i = ; i < sizeof(s); i++)
{
printf("%c", s[i]);
}
eclipse输出: (换行 \n 和 回车\r 效果都是换行的效果)
a
\ cb
g
gcc编译器输出:
a
g\ cb //回车后光标移到第二行起始,g将8覆盖
\12 : 2位八进制数,十进制10,控制字符LF,表示换行,gcc编译器下,表示从当前位置换到该位置对应的下一行
\\ :表示 \
\t : 表示水平制表,即一个TAB
\xd: 1位十六进制数,十进制13,控制字符CR,表示回车(gcc编译器下,回车表示回到本行首位,其后输出字符会覆盖之前数据)
注意转译字符 八进制和十六进制的问题:
char s[] = "a\12345b\x1221g\xay";
八进制最多选3位,即\123,当该八进制数转化为十进制后大于ASCII码表最大值127时,是一个乱码。
十六进制最多选两位,但截取\x后的整数的最后2位处理,前面的位数丢弃,即截断,即丢弃12,十六进制\x21,十进制33表示!
所以长度计算中:
sizeof是10位,即:a \123 4 5 b \x21 g \xa y \0
strlen是9位,即:a \123 4 5 b \x21 g \xa y
常用转译字符:
\? ----代表一个问号---- 063
转义字符 & sizeof & strlen的更多相关文章
- Strcmp(字符串1,字符串2)函数 Sizeof && strlen() Substr(a,b)
Strcmp(字符串1,字符串2)函数 { strcmp函数是比较两个字符串的大小,返回比较的结果.一般形式是: i=strcmp(字符串,字符串); 其中,字符串1.字符串2均可为字符串常量或变量 ...
- sizeof, strlen区别
strlen与sizeof的区别 .sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型. 该类型保证能容纳实现所建立的最大对象的字节大小. .size ...
- sizeof && strlen 的区别
本文主要记录了 sizeof 操作符 和 strlen() 函数的区别,以及各自的用途.(在下才疏学浅,发现错误,还请留言指正) sizeof 和 strlen 的区别 示例代码如下: #includ ...
- sizeof strlen strncpy用法总结 结构体实际所占内存大小 以及memset用法
sizeof测类型(数组名除外) strlen测实际长度 strncpy返回指针类型 #include <stdio.h> #include <stdlib.h> #inclu ...
- sizeof strlen 求char*字符串的长度
sizeof只是求变量所占的字节数,sizeof(char *) = 4字节: strlen(char*) 可以得到整个字符串的长度. 如果是数组vec,那么使用sizeof就可以得到整个数组的所占的 ...
- 缓冲区溢出实验 2 sizeof/strlen
实验环境.代码.及准备 https://www.cnblogs.com/lqerio/p/12870834.html vul2 下面只给出有漏洞部分的代码.Vul2问题为sizeof函数在计算时会考虑 ...
- sizeof strlen区别于联系
http://www.cnblogs.com/carekee/articles/1630789.html
- [基础]sizeof和strlen
转自网络 首先切记,sizeof不能用来求字符串长度 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型.该类型保证能容纳实现所建立的最大对象的字 ...
- sizeof(自己摸索d)
Sizeof() 判断数据类型长度符的关键字 sizeof用法 sizeof(类型说明符,数组名或表达式); 或sizeof (变量名); 定义 sizeof是C/C++中的一个操作符(operato ...
随机推荐
- lightoj1145 【DP优化求方案】
题意: 有一个k面的骰子,然后问你n个骰子朝上的面数字之和=s的方案: 思路: dp[i][j] 代表 前 i 个骰子组成 j 有多少种方案: 显然 dp[i][j] = dp[i - 1][j - ...
- [HNOI2010] 物品调度 fsk
标签:链表+数论知识. 题解: 对于这道题,其实就是两个问题的拼凑,我们分开来看. 首先要求xi与yi.这个可以发现,x每增加1,则pos增加d:y每增加1,则pos增加1.然后,我们把x与y分别写在 ...
- assembly x86(nasm)画三角形等图形的实现(升级版)
https://www.cnblogs.com/lanclot-/p/10962702.html接上一篇 本来就有放弃的想法,可是有不愿退而求次, 然后大神室友写了一个集海伦公式计算三角形面积, 三点 ...
- IDEA快捷的添加包名
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题 2018年02月24日 17:24:49 _云卷云舒_ 阅读数:6264 标签: intellij idea 更 ...
- Django (九) 项目开发流程&项目架构
项目开发流程&项目架构 1. 软件开发的一般流程 1. 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. 2. 概要设计及详细设计: 开发对需求进行概要设计,包 ...
- 利用arguments对象在javaScript中实现重载(overload)
一些概念: 重载(overload): 什么是: 相同函数名,不同参数列表的多个函数,在调用时,可根据传入参数的不同,自动选择对应的函数调用! 为什么: 减轻调用者的负担,一个函数名,可执行多种操作 ...
- [软件工程基础]2017.10.31 第四次 Scrum 会议
具体事项 项目交接燃尽图 每人工作内容 成员 已完成的工作 计划完成的工作 工作中遇到的困难 游心 #7 掌握 PHP:#6 阅读分析 PhyLab 数据处理相关代码 #10 搭建可用的开发测试环境: ...
- Linux下命令行中的复制和粘贴
安装gpm:yum install -y gpm* 开启gpm服务:systemctl start gpm 按住鼠标左键,选中想要复制的内容,松开就完成复制,再在复制的位置按右键就完成粘贴.
- C/C++程序员应聘常见面试题深入剖析(1)
摘自:http://blog.csdn.net/zhoudengqing 1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵.文中的大多数面试题来自各大论 ...
- 【转】Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch.CyclicBarrier和Semaphore Java并发编程:CountDownLatch.CyclicBarrier和Semaphore 在j ...