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