当前位置:网站首页>字符串的小知识
字符串的小知识
2022-08-02 14:02:00 【iccoke】
前言
我们从键盘输入一个字符串是,可以用scanf,也可以使用getchar函数,但是当我们将一个字符串放入一个数组中时,就会出现两种形式
例如字符串" hello"
char crr[]={'h','e','l','l','o'};
char brr="hello"
第一种形式肉眼可见的繁琐,当字符数组规模较大时,第二种方法的优势便可以显现出来。
这两者在内存的存储中存储的形式是一样的
但是在一维数组的代码中,我们一般都会涉及到数组长度的应用
我们一般有这两种形式
1.sizeof(crr)/sizeof(crr[0])
这个的使用前提是必须和数组的定义在同一个作用域。
2.使用strlen函数
前提是要引用#include<string.h>头文件并且当遇到\0后就会停止,我们在下面的列子中详细说明。
int main() {
char crr[] = { 'h','e','l','l','o' };
char brr[] = "hello";
int len1 = sizeof(crr) / sizeof(crr[0]);
int len2 = sizeof(brr) / sizeof(brr[0]);
int len3 = strlen(crr);
int len4 = strlen(brr);
printf(" %-5d%-5d%-5d%-5d", len1, len2, len3, len4);
}
我们预测将会输出4个5,其中%-5d表示给输出值五个字格,负号代表向左对齐
我们运行程序
我们可以看到得到的结果是5 6 23 5
int len1 = sizeof(crr) / sizeof(crr[0]);
int len2 = sizeof(brr) / sizeof(brr[0]);
我们知道,字符串在存入内存中时,实则后面会有一个\0存在,肉眼不可见,但是在计算中就会出现问题。
int len3 = strlen(crr);
strlen函数对于char crr[] = { 'h','e','l','l','o' }这类的定义得到的值其实是完全随机的,之前提到strlen函数遇到\0结束,但是这个定义中没有\0,因此会出现如上问题
int len4 = strlen(brr);
因此我们在使用sizeof和strlen计算字符数组的长度时,就应该注意,选用合适的方法来计算。
还有一些特殊的字符串数组,例如
int main() {
char crr[] = "\'abc\b\123\07\"\tt\n";
printf("%-5d%-5d", sizeof(crr) / sizeof(crr[0]), strlen(crr));
}
这种看起来很复杂的字符串该如何计算,这里我们就要引入一个概念--转义字符。
这是常见的转义字符,根据这个我们可以预测结果应该为12 11
运行结果
边栏推荐
- 浅浅写一下PPOCRLabel的使用及体验
- Verilog学习 系列
- Unit 11 Serializers
- Linux:CentOS 7 安装MySQL5.7
- Unit 7 ORM table relationships and operations
- The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
- verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十二章)
- Unit 4 Routing Layer
- Web Design (Beginners) [easy to understand]
- 猜数字游戏,猜错10次关机(srand、rand、time)随机数生成三板斧(详细讲解!不懂问我!)
猜你喜欢
随机推荐
Raj delivery notes - separation 第08 speak, speaking, reading and writing
[ROS]roscd和cd的区别
What's wrong with running yolov5 (1) p, r, map are all 0
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十二章)
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
MySQL数据库语法格式
chapter6可视化(不想看版)
Implementation of redis distributed lock and watchdog
Flask项目的完整创建 七牛云与容联云
drf routing component Routers
jwt (json web token)
redis延时队列
Flask上下文,蓝图和Flask-RESTful
Unit 7 ORM table relationships and operations
chapter7
drf视图组件
猜数字游戏,猜错10次关机(srand、rand、time)随机数生成三板斧(详细讲解!不懂问我!)
Raft协议图解,缺陷以及优化
第十二单元 关联序列化处理
Chapter6 visualization (don't want to see the version)