C语言字符串数组长度统计的问题

高头大马 2019-08-27 01:54:20
第一次发帖,想请教各位大佬,如何统计C语言里,下面字符串数组的实际长度
Char arr[10] = {0x63,0x64,0x00,0x66,0x67};
这里先谢谢各位大佬啦
...全文
293 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
高头大马 2019-08-28
  • 打赏
  • 举报
回复
引用 9 楼 爱吃鱼的橙子 的回复:
可以规定输入的char[]不能连续两个为0,否则认为后续全为0,然后添加判断条件,非0和0的下一个非0,统计+1,这样的。 感觉何必这么为难自己,哈哈
我也不想难为自己。。。但是对称加密里面,前置IV是可以设置为 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x30, 0x40, 0x50, 0x00, 0x00 }的。。。
高头大马 2019-08-28
  • 打赏
  • 举报
回复
引用 10 楼 自信男孩 的回复:
[quote=引用 2 楼 rk4k94 的回复:] [quote=引用 1 楼 自信男孩 的回复:] 这个可以自己试一下,如果按照字符串的接口strlen,那么这个长度应该是2。0x00就是0,'\0'就是0。 如果用sizeof,那么长度应该是10.
是的,我之前都试了,但是我想打印出来的是5,所以咋整。。。求教了。。。。[/quote] 把你的代码贴出来吧,不知道你怎么实现的输出是5[/quote]我是想让他输出5,但实际上确实是strlen是2,sizeof是10。。所以才想求教有没有好方法。。问题背景是我要做一个C/C++的对称加密程序,由于可以让用户自行设置前置IV和秘钥引起的,比如我的一个前置IV就可以设置为 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x66, 0x67, 0x68, 0x00, 0x00 },长度虽然是固定16,但需要监测里面是否真的存放了16个字节。。。
636f6c696e 2019-08-28
  • 打赏
  • 举报
回复
没有现成的方法,只能自己按某种规律遍历计算或者统计
  • 打赏
  • 举报
回复
表示看不懂!看回复学习学习
自信男孩 2019-08-27
  • 打赏
  • 举报
回复
引用 2 楼 rk4k94 的回复:
[quote=引用 1 楼 自信男孩 的回复:]
这个可以自己试一下,如果按照字符串的接口strlen,那么这个长度应该是2。0x00就是0,'\0'就是0。
如果用sizeof,那么长度应该是10.
是的,我之前都试了,但是我想打印出来的是5,所以咋整。。。求教了。。。。[/quote]
把你的代码贴出来吧,不知道你怎么实现的输出是5
爱吃鱼的橙子 2019-08-27
  • 打赏
  • 举报
回复
可以规定输入的char[]不能连续两个为0,否则认为后续全为0,然后添加判断条件,非0和0的下一个非0,统计+1,这样的。
感觉何必这么为难自己,哈哈
liups 2019-08-27
  • 打赏
  • 举报
回复
引用 2 楼 rk4k94 的回复:
[quote=引用 1 楼 自信男孩 的回复:] 这个可以自己试一下,如果按照字符串的接口strlen,那么这个长度应该是2。0x00就是0,'\0'就是0。 如果用sizeof,那么长度应该是10.
是的,我之前都试了,但是我想打印出来的是5,所以咋整。。。求教了。。。。[/quote] 5的标准是什么?这个非常重要! 你可能想的是我保存了5个进去,所以是5。但是电脑不会知道这个。所以就是两个方法: 1、自己做下计数;2、用特殊字符标记结束
自信男孩 2019-08-27
  • 打赏
  • 举报
回复
引用 5 楼 英雄@末路 的回复:
后面没有附初值的元素可不一定是0哦,所以还是仔细想想吧

可以测试一下,一定是0。
所以这样赋值,就是把所有的数组元素都赋值为0.

int array[10] = {0};
lin5161678 2019-08-27
  • 打赏
  • 举报
回复
引用 5 楼 英雄@末路 的回复:
后面没有附初值的元素可不一定是0哦,所以还是仔细想想吧
一定是0 还是仔细想想吧
英雄@末路 2019-08-27
  • 打赏
  • 举报
回复
后面没有附初值的元素可不一定是0哦,所以还是仔细想想吧
六道佩恩 2019-08-27
  • 打赏
  • 举报
回复
说白了,你就是想忽略掉末尾全部的0,从有数据开始到最前面都算数是吧?这好办,你写个相关函数,从末尾遍历到头,遇到非0就跳出,返回遇到的下标+1,比如你发是这个例子,会在下标4跳出,那么返回4+1,就是它的长度
lin5161678 2019-08-27
  • 打赏
  • 举报
回复
引用 2 楼 rk4k94 的回复:
[quote=引用 1 楼 自信男孩 的回复:] 这个可以自己试一下,如果按照字符串的接口strlen,那么这个长度应该是2。0x00就是0,'\0'就是0。 如果用sizeof,那么长度应该是10.
是的,我之前都试了,但是我想打印出来的是5,所以咋整。。。求教了。。。。[/quote]自己定义一个变量记录你使用了数组多少个元素 没有现成的做法
高头大马 2019-08-27
  • 打赏
  • 举报
回复
引用 1 楼 自信男孩 的回复:
这个可以自己试一下,如果按照字符串的接口strlen,那么这个长度应该是2。0x00就是0,'\0'就是0。 如果用sizeof,那么长度应该是10.
是的,我之前都试了,但是我想打印出来的是5,所以咋整。。。求教了。。。。
自信男孩 2019-08-27
  • 打赏
  • 举报
回复
这个可以自己试一下,如果按照字符串的接口strlen,那么这个长度应该是2。0x00就是0,'\0'就是0。
如果用sizeof,那么长度应该是10.

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧