请查找下面的代码片段。
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。