在线的朋友 帮忙看看strlen的有关问题

在线的朋友 帮忙看看strlen的问题
char test[] = "\x09\x08\x00";
printf("%d\n", strlen(test));

上面的结果 strlen(test) = 2;

我要的结果是3 怎么办呢

------解决方案--------------------
这个方法应当包治百病了吧
#include <iostream>
#include <string>

int main(int argc, char* argv[]) {
  const char test[] = "\x09\x08\x00";
  std::cout << sizeof(test) - 1 << std::endl;
}

------解决方案--------------------
你要的应该是想输出数组的长度:

char test[3] = "\x09\x08\x00"; //不写3的话,编译器会尝试内存对齐
printf("%d\n", strlen(test)); //输出字符串长度,2
printf("%d\n", sizeof(test)); //输出数组长度, 3


引用:
char test[] = "\x09\x08\x00";
printf("%d\n", strlen(test));

上面的结果 strlen(test) = 2;

我要的结果是3 怎么办呢

------解决方案--------------------
你想要3,那就直接printf("%d" ,3);
可strlen返回不了3,原因上边都说完了。