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

Ahh_Freshmeat 2013-06-05 11:01:35
char test[] = "\x09\x08\x00";
printf("%d\n", strlen(test));

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

我要的结果是3 怎么办呢
...全文
110 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
AndyStevens 2013-06-06
  • 打赏
  • 举报
回复
求数组的维度用sizeof(arrary)/sizeof(type)
starytx 2013-06-06
  • 打赏
  • 举报
回复
你想要3,那就直接printf("%d" ,3); 可strlen返回不了3,原因上边都说完了。
图灵狗 2013-06-06
  • 打赏
  • 举报
回复
你要的应该是想输出数组的长度:

char test[3] = "\x09\x08\x00";	//不写3的话,编译器会尝试内存对齐
printf("%d\n", strlen(test));	//输出字符串长度,2
printf("%d\n", sizeof(test));	//输出数组长度, 3
引用 楼主 thdxs 的回复:
char test[] = "\x09\x08\x00";
	printf("%d\n", strlen(test));
上面的结果 strlen(test) = 2; 我要的结果是3 怎么办呢
大尾巴猫 2013-06-05
  • 打赏
  • 举报
回复
sizeof 数组名/sizeof 类型,得到的就是数组元素的个数。 你的例子中直接 sizeof test就可以得到3(sizeof char是1)。
turing-complete 2013-06-05
  • 打赏
  • 举报
回复
这个方法应当包治百病了吧
#include <iostream>
#include <string>

int main(int argc, char* argv[]) {
  const char test[] = "\x09\x08\x00";
  std::cout << sizeof(test) - 1 << std::endl;
}
Ahh_Freshmeat 2013-06-05
  • 打赏
  • 举报
回复
最后的00是返回回来最后的一个字节 看来得想其他办法来判断了
hugett 2013-06-05
  • 打赏
  • 举报
回复
字符串都是以'\0'为结束的。。你最后一个字符是0。。。被当作结束符了。。
turing-complete 2013-06-05
  • 打赏
  • 举报
回复
len = strlen(test) + 1 你能具体点吗? 到底什么要求啊

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧