请问strlen()是不是不计算\0?
#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
[解决办法]
对,不包括结束
[解决办法]
- C/C++ code
#include <stdio.h>#include <string.h>int main(int argc, char *argv[]){ char* str= "hello"; printf("%d", strlen(str)); return 0;}
[解决办法]
是的
[解决办法]
strlen()是不是不计算\0?
是的不计算。
[解决办法]
strlen确实不计算结尾的'\0',并且strlen(NULL)会报错,使用时要注意判断参数是否为空,否则会抛出异常。
[解决办法]
strlen 通过\0字符串的结束,但计算的时候不包含\0
[解决办法]
strlen()函数计算的是mesg字符串的长度,不包括"\0".
而sizeof()是测字符串长度包括"\0".
sizeof(mesg)是测数组占的空间大小(10),而sizeof(char)测的是char所占的空间大小(1).两个之比为十.还可以把sizeof(char)改为sizeof(mesg[0]),结果一样.
[解决办法]
是的,不包括\0
[解决办法]
所以有:
- C/C++ code
char ch[]="skdjfhs";int len=strlen(ch);char *str=new char[len+1];//加上一strncpy(str,ch,len);str[len]='\0';delete [] str;
[解决办法]
是
[解决办法]
strlen()不计算,而sizeof()会计算
并且strlen()会返回碰到的第一个'\0'之前的字符数