gpt4 book ai didi

c - 获取C中无符号字符数组的长度

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:20 25 4
gpt4 key购买 nike

如何获取 unsigned char* 数组的长度?

这是我的数组:

unsigned char ot[] = { 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0 };

我尝试像这样使用 strlen():int length = strlen((char*) ot);

它返回 11 的长度,直到第一个 0x0,但是我的数组对此有何改变? (检查最后一个元素)

unsigned char ot[] = { 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0, 0x0, 0x0, 0x0, 0xa1 };

然后我仍然得到 11 个元素,我怎样才能得到整个数组的“真实”长度?就像在某些 0x0 元素之后会有数据会怎样。

例如:

unsigned char* file_buffer = new unsigned char[BUFFER_SIZE];
fread(file_buffer,sizeof(unsigned char),BUFFER_SIZE,input_file)

什么是最好的解决方案?因为 fread() 的返回值可能会有所不同,如果我正在读取文件的最后一 block ,如果文件中的一些数据之前是 0x0 怎么办?

最佳答案

How can I get length of array which is array of unsigned char* ?

根据您提供的示例,您正在尝试检索 array [] 而不是 array * 的长度。这可以使用关键字 sizeof (sizeof(ot)) 来实现。

然而,当涉及到指针时(比如你的 unsigned char *),你需要事先知道大小,因为在它上面使用 sizeof 会返回分配的大小指针本身的大小,而不是该指针的实际内容大小。

关于c - 获取C中无符号字符数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58781545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com