打印一串被定义好的字符数组时会出现乱码的原因以及解决方案,如何求数组中元素的个数

首先说明一下字符串的含义。

字符串就是一串字符,用双引号(double quote)引起来的一串字符(英文双引号)成为字符串面值(String Literal),或者简称字符串。

注:字符串的结束标志是一个 \0 的转义字符。在计算字符串的长度时以 \0 作为结束标志,这个转义字符在计算字符串长度时不算进字符串长度。\0就是字符串的结束标志。

求字符串的长度 - strlen

在使用strlen时要注意引用头文件。

打印字符串 - %s

 

 

在上面打印字符数组arr2时就出现了打印出来有乱码的情况,这是什么原因导致的呢?

在打印字符数组arr1时,打印是从字符 'a' 开始的,打印完字符 'c' 后会碰到字符串结束标志 \0,这时打印就结束了。

而再打印字符数组arr2时,打印从字符 'a' 开始,在打印完字符 'c' 后并没有字符串结束标志,这时打印就会继续,因为数组都是存储在内存当中的,打印会一直向下进行,直到碰到字符串结束标志才会停止打印。

如果我们打印输出字符串arr2的字符串长度,那么结果如下:

意思就是在字符串一直向下打印,直到第43个字符串才碰到了字符串结束标志。这个字符数组的长度就是随机的,可能因电脑不同而有差异。

解决方法:

 如果我们在字符数组arr2中手动加上 '\0' 字符,那么打印就会打印到第四个字符时就停止打印了。

并且这是字符数组arr2的长度为3。

 虽然在求字符串长度时不会算上 '\0' ,但是在求数组中元素的个数时就会算进 '\0'了,这个需要注意一下。

这里在说明一下如何求字符数组中元素的个数:

 我们可以使用语句

int sz = sizeof(arr) / sizeof(arr[0]);

来计算字符数组中元素的个数;原理就是先求出被定义数组所占空间的大小除以单个数组元素所占空间的大小。

数组中的元素必须都是同类型元素。

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值