如题所述
strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\0为止,计数结果不包括\0.
其声明为:
unsigned int strlen(char *s);
比如定义字符串:
char *p = "this is for testing";
调用
strlen(p);
返回的结果就是p中元素的个数,即19。
需要注意的是,strlen并不是绝对安全的,如果在传入的字符数组的合法范围内,不存在结束符\0,那么strlen函数会一直访问下去,超出数组范围,即出现越界访问。
所以使用strlen时,程序员必须确认参数字符数组中包含\0值,否则会出现不可预知后果。
其声明为:
unsigned int strlen(char *s);
比如定义字符串:
char *p = "this is for testing";
调用
strlen(p);
返回的结果就是p中元素的个数,即19。
需要注意的是,strlen并不是绝对安全的,如果在传入的字符数组的合法范围内,不存在结束符\0,那么strlen函数会一直访问下去,超出数组范围,即出现越界访问。
所以使用strlen时,程序员必须确认参数字符数组中包含\0值,否则会出现不可预知后果。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-03-03
strlen所作的仅仅是一个的工作,它从内存的某个位置(可以是开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。
原型:extern strlen(char *s);,在Visual C++ 6.0中,原型为size_t strlen( const char *string );,其中size_t实际上是unsigned int,在VC6.0中可以看到这样的代码:typedef unsigned int size_t;。
头文件:
格式:strlen (字符数组名)
功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内
说明:返回s的长度,不包括结束符NULL。
因为字符串是以字符'\0'结尾的,但是这个'\0'在我们的字符串是隐藏的,我们看不到。实际上是有的.例如:
char a[4]="abc";//这里数组的元素个数至少应该是4,否则此字符串不叫字符串了,只能叫字符数组了。
strlen判断一个字符串的结束就是以其末尾的'\0'为界限。其实现代码可以模拟为以下:
int strlen(char *p)
{
int i=0;
while(*p++)i++;
return i;
}
所以他是不包括'\0'这个字符的。本回答被网友采纳
原型:extern strlen(char *s);,在Visual C++ 6.0中,原型为size_t strlen( const char *string );,其中size_t实际上是unsigned int,在VC6.0中可以看到这样的代码:typedef unsigned int size_t;。
头文件:
格式:strlen (字符数组名)
功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内
说明:返回s的长度,不包括结束符NULL。
因为字符串是以字符'\0'结尾的,但是这个'\0'在我们的字符串是隐藏的,我们看不到。实际上是有的.例如:
char a[4]="abc";//这里数组的元素个数至少应该是4,否则此字符串不叫字符串了,只能叫字符数组了。
strlen判断一个字符串的结束就是以其末尾的'\0'为界限。其实现代码可以模拟为以下:
int strlen(char *p)
{
int i=0;
while(*p++)i++;
return i;
}
所以他是不包括'\0'这个字符的。本回答被网友采纳
第2个回答 2011-03-12
简单的跟你说strlen是算长度的,比如,你定义int a[10];
如果运算sizeof(a),会返回40.因为一个int类型占了4个字节的内存空间,10个就占了40字节
如果运算strlen(a),返回不一定是40,这要看你在a数组里面用了多少空间,如果用了4个字节,就返回4,如果用满就是返回40了
如果运算sizeof(a),会返回40.因为一个int类型占了4个字节的内存空间,10个就占了40字节
如果运算strlen(a),返回不一定是40,这要看你在a数组里面用了多少空间,如果用了4个字节,就返回4,如果用满就是返回40了
第3个回答 2011-03-03
__cdecl strlen(const char *);
计算字符串的实际长度(不含字符串结束标志‘\0’),并将计算结果作为函数值返回。
计算字符串的实际长度(不含字符串结束标志‘\0’),并将计算结果作为函数值返回。
第4个回答 2011-03-05
尾的'\0'。
strlen的工作原理是不断向后看,直到一个'\0'字符。
因此第一个程序的运行结果是不可预测的,取决于之前内存里的残留数据。
而第二个程序,数组的剩余项均被赋成0
strlen的工作原理是不断向后看,直到一个'\0'字符。
因此第一个程序的运行结果是不可预测的,取决于之前内存里的残留数据。
而第二个程序,数组的剩余项均被赋成0