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

标签 c arrays hex string-length variable-length

如何获取 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/

相关文章:

c - C 中的宏条件语句

c 替代 signal() + alarm()

C# 是否清除具有值类型的 List<T> 仍然是 O(n) 操作?

c++ - 分配动态分配的指针数组

python - 如何将 ASCII 字节文件作为实际字节写入二进制文件?

javascript - JavaScript 变量的背景颜色十六进制

c - 使用isupper函数

C 操作目录 : how to position at a directory by giving its name in main arguments

python - 获取每个二维数组的累积计数

c - fprintf 正在打印两个值而不是一个