读书人

请教strlen()是不是不计算\0

发布时间: 2012-03-07 09:13:51 作者: rapoo

请问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'之前的字符数

读书人网 >C语言

热点推荐