strlen()和sizeof()究竟输出什么

news/2024/11/28 0:41:10/

strlen():

char a[] = {'M','e','t','a','x'};//数组未设定大小,且尾部没有\0
char b[5] = {'M','e','t','a','x'};//数组长度不够 放不下\0
char c[] = {'M','e','t','a','x',};//数组未设定大小
printf("%d  %d  %d",strlen(a),strlen(b),strlen(c));//都是输出随机一个大于等于5的数char d[6或7或8...] = {'M','e','t','a','x'};//数组大小大于字符数量
char e[10] = {"Metax"};//数组设定大小 且数组元素是字符串
char f[] = {"Metax"};//数组元素是字符串
printf("%d  %d  %d",strlen(d),strlen(e),strlen(f));;//输出5  5  5
总结:
(1)字符数组中存储的是字符(尾部没有\0)
        (a)未设定字符数组大小或数组长度不够(不够放下\0):strlen()随便输出一个数字   (如数组a b c)
        (b)设定字符数组元素大小且数组大小大于数组字符的数量:strlen()输出字符数量(不包括\0的个数)  (如数组d)
(2)字符数组中存储的是字符串(系统会自动在尾部加\0)  strlen输出字符串不加\0的长度   (如数组e f)

sizeof():

char h[10] = {'M','e','t','a','x'};  10
char i[] = {"Metax"};//字符串自动在尾部添加\0  5+1
char g[] = {'M','e','t','a','x'};  5
printf("%d  %d  %d",sizeof(h),sizeof(i),sizeof(g));//10  6   5
总结:
(1)若数组有设定大小:则sizeof输出设定大小  (如数组h)
(2)若数组无设定大小:
        (a)若字符数组元素是字符串组成 则sizeof输出字符串长度+1(字符串自动加上\0)  (如数组i)
        (b)若字符数组元素是字符组成,则sizeof输出字符数量 不会自动加上\0的数量1  (如数组g)

http://www.ppmy.cn/news/1078799.html

相关文章

不需要Photoshop!这10款替代软件也能轻松处理图片

Photoshop是一款功能强大的图像处理工具,很多人说到修图就会想到要用PS,但是Photoshop是要付费的,对于业余设计师或者对修图需求量不太高的普通用户来说,使用Photoshop的成本略高。本篇文章,我们向你推荐5款Photoshop替…

信息技术04--初/高中--教学设计知识点梳理

文章目录 第一章 信息技术基础1.1 信息概念与特征1.1.1 信息的概念1.1.2 信息的特征 1.2 信息技术概述1.2.1 信息技术概念1.2.2 信息技术五次革命 1.3 信息的获取1.3.1 信息获取的过程:1.3.2 搜索引擎1.3.3 引擎符号 1.4 信息的表示和编码1.4.1 进制分类1.4.2 二进制…

Java获取文件内容IO流

文章目录 InputStream和ReaderScannerNIO外传 一般读取文件类的使用字符流即可 InputStream和Reader InputStream和Reader是Java IO中的两个重要的抽象基类,InputStream是二进制流,Reader是字符流。使用InputStream或者Reader读取文件内容可以帮助我们…

代码随想录训练营 DP01

代码随想录训练营 DP01 509. 🌸斐波那契数🌸code 70. 🌸爬楼梯🌸code 746. 🌸使用最小花费爬楼梯🌸code 509. 🌸斐波那契数🌸 斐波那契数 (通常用 F(n) 表示)…

六、员工信息分页+启用/禁用员工账号(前端经典大数/精度丢失问题)

员工信息分页 整体流程: 1、创建mybatisplus配置类 在config包下创建mybatisplusconfig /*** 配置MybatisPlus分页插件*/ Configuration //既然是配置类,要加配置类的注解 public class MybatisPlusConfig {Beanpublic MybatisPlusInterceptor mybatis…

Vue: 声明式导航(router-link)的跳转传参的两种方式

声明式导航-跳转传参 文章目录 声明式导航-跳转传参1. 查询参数传参代码示例:2. 动态路由传参 动态路由参数可选符 只要提到了声明式导航,就得想到(router-link) 1. 查询参数传参 语法: to"path?参数名值"对…

VMware tools的安装以及按钮灰色的解决方法

VMware tools的安装 ** 注意:** 新版本的 VMware 会自动安装的 VMware tools,如何测试 VMware tools 呢?在Windows 系统里复制一段话,能粘贴到 Ubuntu 系统里终端里,说明 VMware tools 已经安装了。 没有安装的请参考…

鉴源实验室 | 软件代码结构化覆盖测试-分支覆盖

作者 | 李伟 上海控安安全测评部总监 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 引言: 上一篇开始我们介绍白盒的代码结构覆盖率测试,已经完成了语句覆盖测试的讲解,本篇我们介绍分支覆盖。 01…