strlen实际上是,从参数表示的地址往后找,找到第一个'\0',即串尾.然后计算'\0'至首地址的"距离",即隔了几个字符,从而得出长度.
char x[]={0xBC,0xDD,0xCA};中,实际上是定义了一个char型的数组,而由于x[0],即0xBC开始往后找,一直到0xCA,都没'\0',所以会继续往后.当然,实际上往后找到的是其他值.
扩展资料:
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0').
函数原型
extern unsigned int strlen(char *s);
size_t strlen(const char *string);
typedef unsigned int size_t;
头文件:string.h或cstring
格式:strlen (字符数组名)
功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内
说明:返回s的长度,不包括结束符NULL.
参考资料:strlen-百度百科
函数声明:extern unsigned int strlen(char *s);
所属函数库:string.h
功能:返回s所指的字符串的长度,其中字符串必须以'\0'结尾
参数:s为字符串的初始地址
使用举例:
代码如下
编译运行结果
说明:
函数strlen比较容易理解,其功能和sizeof很容易混淆.其中sizeof指的是字符串声明后占用的内存长度,它就是一个操作符,不是函数;而strlen则是一个函数,它从第一个字节开始往后数,直到遇见了'\0',则停止
第一 string头文件中的函数strlen 只可以用来测试字符型数组的长度,其他类型不可以
第二 如果要测试int 修改原函数中的参数,会导致数组长度变长(计算机会一直找下去,直到遇到\0)
第三 如果是字符数组,当里面的字符数少于数组长度时,可以正常输出用strlen,如果等于数组长度,则会出现问题
函数介绍:
(推荐教程:c语言教程)
strlen()函数用于计算字符串的长度,直到空结束字符,但不包括空结束字符.
语法结构:
size_t strlen(const char *str)
参数说明:
str -- 要计算长度的字符串.
返回值:
该函数返回字符串的长度
strlen()只是统计字符串的长度,统计到'\0'结束,但不包括'\0',这个与sizeof()不一样.
对于用双引号引起来的字符串,系统默认最后一位字符为'\0',如你自己定义的:
char a[]="china";
char b[]={"china"};
另外,数组初始化还可以是一个字符一个字符赋值,如:
char c[]={'c','h','i','n','a'};
char d[]={'c','h','i','n','a','\0'};
但系统不会自动给你在最末位添加'\0'
所以在统计char c[]={'c','h','i','n','a'}时,统计到a时,系统还没找到\0,所以会继续统计,直到找到'\0'为止.所以就有你第三个值为11的情况,这个根据不同的运行环境而定.
strlen:计算字符串长度的库函数名.
str:通常,程序员喜欢用它作 字符串 变量名.它是string(英文词字符串的缩写).
len:通常,程序员喜欢用它作 变量名.它是 length(英文词长度的缩写).
例如:
int len;
len = strlen(str);
printf("the string length is: %d",len);
扩展资料:
extern?unsigned?int?strlen(char?*s);
typedef?unsigned?int?size_t;
格式:strlen (字符指针表达式)
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止.
以上就是土嘎嘎小编为大家整理的C语言库函数strlen相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!