当前位置:网站首页>字符串的小知识
字符串的小知识
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
运行结果
边栏推荐
猜你喜欢
Camera Hal(Hal3)层修改Preview流
Raft协议图解,缺陷以及优化
动手学ocr(一)
Briefly write about the use and experience of PPOCRLabel
yolov5,yolov4,yolov3乱七八糟的
瑞吉外卖笔记——第05讲Redis入门
What are the file encryption software?Keep your files safe
The specific operation process of cloud GPU (Hengyuan cloud) training
Raj delivery notes - separation 第08 speak, speaking, reading and writing
Creating seven NiuYun Flask project complete and let cloud
随机推荐
Flask框架
【c】小游戏---扫雷雏形
Briefly write about the use and experience of PPOCRLabel
[ROS] (04) Detailed explanation of package.xml
Building and getting started with the Flask framework
Flask项目的完整创建 七牛云与容联云
Unit 5 Hold Status
Flask框架深入二
[ROS](03)CMakeLists.txt详解
Camera Hal(Hal3)层修改Preview流
drf source code analysis and global catch exception
猜数字游戏,猜错10次关机(srand、rand、time)随机数生成三板斧(详细讲解!不懂问我!)
第十二单元 关联序列化处理
php开源的客服系统_在线客服源码php
IDEA打包jar包
Unit 13 Mixing in View Base Classes
Flask framework in-depth
(ROS) (03) CMakeLists. TXT, rounding
深度学习框架pytorch快速开发与实战chapter4
Unit 3 view layer