请问strlen()是不是不计算\0?

jiahuafu 2008-03-24 01:46:55
#include "Stdio.h"
#include "Conio.h"
#include "String.h"

int main(void)
{

char mesg[] = "123456789";

printf("strlen:%d ,sizeof:%d",strlen(mesg),sizeof(mesg)/sizeof(char));


getch();
return 0;
}

答案是 9,10
...全文
8894 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Peterry 2008-05-25
  • 打赏
  • 举报
回复
大家的速度真赞呀,我看帖的时候还0回复呢,回了一句话刷新再看,汗!~~已经结帖了...
tsocpp 2008-03-24
  • 打赏
  • 举报
回复 1
strlen()不计算,而sizeof()会计算
并且strlen()会返回碰到的第一个'\0'之前的字符数
HelloDan 2008-03-24
  • 打赏
  • 举报
回复
hastings 2008-03-24
  • 打赏
  • 举报
回复
所以有:
char ch[]="skdjfhs";
int len=strlen(ch);
char *str=new char[len+1];//加上一
strncpy(str,ch,len);
str[len]='\0';
delete [] str;
ZiSheng 2008-03-24
  • 打赏
  • 举报
回复
是的,不包括\0
Leon惊叹号 2008-03-24
  • 打赏
  • 举报
回复
strlen()函数计算的是mesg字符串的长度,不包括"\0".
而sizeof()是测字符串长度包括"\0".

sizeof(mesg)是测数组占的空间大小(10),而sizeof(char)测的是char所占的空间大小(1).两个之比为十.还可以把sizeof(char)改为sizeof(mesg[0]),结果一样.
星羽 2008-03-24
  • 打赏
  • 举报
回复
strlen 通过\0字符串的结束,但计算的时候不包含\0
wbczyh 2008-03-24
  • 打赏
  • 举报
回复
strlen确实不计算结尾的'\0',并且strlen(NULL)会报错,使用时要注意判断参数是否为空,否则会抛出异常。
Supper_Jerry 2008-03-24
  • 打赏
  • 举报
回复
strlen()是不是不计算\0?
是的不计算。
p0303230 2008-03-24
  • 打赏
  • 举报
回复
是的
独孤过儿 2008-03-24
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char* str= "hello";
printf("%d", strlen(str));
return 0;
}

5
ouyh12345 2008-03-24
  • 打赏
  • 举报
回复
对,不包括结束

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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