请查找下面的代码片段。

unsigned char bInput[20];
unsigned char cInput[20];

从函数中,我在bInput中得到一个二进制数据,并使用strlen(bInput)确定其长度。
我把二进制的bInput转换成ASCII,并存储在cInput中,然后打印它的长度。但两者都不同。
我是编程新手。请指导其行为。

最佳答案

两种情况的结果不一样。
下面是一个示例场景:
Null是有效的UTF-8,它不能用于C“strings”。

   char temp[8];
   buf = "abcde\0f";

我们这里有一个长度为8的缓冲区,它包含以下字符值:
97 98 99 100 101 0 102 0

这里,根据strlen设计,strlen(temp)等于5,但是缓冲区的实际长度是8。

08-06 20:52