如何测试unsigned char数组的结尾?

时间:2016-05-12 00:18:57

标签: c++ c arrays

我们如何测试unsigned char数组的结尾?使用字符串char很容易,我可以像

那样进行测试
while (str[i] != '\0')

或只是

while (str[i])

但是使用无符号字符数组不起作用,我不明白为什么。这是我需要帮助的一个例子

BYTE* a = getB();
int i=0;
while(a[i]!=0)
{
    printf("%C", a[i]);
    i++;
}

由于

2 个答案:

答案 0 :(得分:8)

完全取决于您。

也就是说,定义数组末尾的含义。

传统上,确定,字符数组的结尾是"空字节",表示终止位置。没有理由你可以使用unsigned char数组来做到这一点。

但是,就像char一样,情况不一定如此。也许你通过计算它的元素(指定一个大小)或通过声明其他一些字符是最后一个来表示数组的结尾。

我们不能告诉你那是什么。只有创建数据的人(就我们在这里所关注的那样,)才能这样做。

因此,请查阅为您提供阵列的库的文档,或者访问您的内存。 :)

答案 1 :(得分:1)

@eugenesh是对的。你不能这样做。要么你需要在末尾有额外的空间并添加某种分隔符或保持字符数