strlen()函数是什么意思? strlen()函数到底是什么意思?为什么输出的是5?

C\u8bed\u8a00\u4e2dstrlen()\u51fd\u6570\u7684\u610f\u601d\uff1f

strlen()\u662f\u8bfb\u53d6\u5b57\u7b26\u4e32\u957f\u5ea6\u7684\u610f\u601d\uff0c\u4e3e\u4f8b\u5982\u4e0b
char a[]={'a','b','c'};
return strlen(a);
\u8fd4\u56de\u5b57\u7b26\u4e32a\u7684\u957f\u5ea6\uff0c\u662f3\u3002
\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0cstrlen()\u51fd\u6570\u9700\u8981\u7684\u5934\u6587\u4ef6\u3002
\u5982\u6709\u7591\u95ee\u8bf7\u60a8\u8ffd\u95ee\u3002

strlen()\u662f\u83b7\u5f97\u5b57\u7b26\u4e32\u957f\u5ea6\u51fd\u6570\uff0c\u8981\u83b7\u5f97\u6570\u7ec4\u957f\u5ea6\u5e94\u8be5\u7528count()
\uff0c\u5e0c\u671b\u5bf9\u4f60\u6709\u5e2e\u52a9\u3002

strlen(char *)

作用:检测字符串实际长度。

如:char s[]="1234567";

int a=strlen(s);//a=7

实际上strlen(char *)检测的是'\0',strlen(char *)碰到'\0'就返回'\0'以前的字符数。

又如:

char f[]="123456\01111";

int b=strlen(f);//b=6,因为遇到了'\0'

扩展资料

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。

⒈sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。

该类型保证能容纳实现所建立的最大对象的字节大小。

⒉sizeof是取字节运算符(关键字),strlen是函数。

⒊sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。

⒋数组做sizeof的参数不退化,传递给strlen就退化为指针了。

⒌大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因

参考资料:百度百科-strlen



strlen(char *)

作用:检测字符串实际长度。

如:char s[]="1234567";

int a=strlen(s);//a=7

实际上strlen(char *)检测的是'\0',strlen(char *)碰到'\0'就返回'\0'以前的字符数。

又如:

char f[]="123456\01111";

int b=strlen(f);//b=6,因为遇到了'\0'

char h[4]={'f','0',0,'h'} ;//注:不能写成char h[4]="f0\0h";因为以""括起来的为字符串,它隐式的以'\0'结尾,而'\0'也占一个字节,所以应写为char h[5]="f0\0h"

int c=strlen(h);//c=2,因为遇到了'\0'(注意'0'不等于'\0',而0等于'\0')

扩展资料:

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。

区别sizeof:

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。

⒈sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。

该类型保证能容纳实现所建立的最大对象的字节大小。

⒉sizeof是取字节运算符(关键字),strlen是函数。

⒊sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。

⒋数组做sizeof的参数不退化,传递给strlen就退化为指针了。

⒌大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因

6.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。

7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。

⒏当适用了于一个结构类型时或变量, sizeof 返回实际的大小,

当适用一静态地空间数组, sizeof 归还全部数组的尺寸。

sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸

⒐数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,

在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小

如果想在函数内知道数组的大小, 需要这样做:

进入函数后用memcpy拷贝出来,长度由另一个形参传进去

参考资料:百度百科-strlen



strlen(char *)
作用:检测字符串实际长度。
如:char s[]="1234567";
int a=strlen(s);//a=7
实际上strlen(char *)检测的是'\0',strlen(char *)碰到'\0'就返回'\0'以前的字符数。
又如:
char f[]="123456\01111";
int b=strlen(f);//b=6,因为遇到了'\0'
扩展资料strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
⒈sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
⒉sizeof是取字节运算符(关键字),strlen是函数。
⒊sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。
⒋数组做sizeof的参数不退化,传递给strlen就退化为指针了。
⒌大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因
参考资料:百度百科-strlen
推荐于 2019-09-01
查看全部5个回答
惠普官网首页-京东电脑办公,购特色!
关注华硕笔记本的都在看
惠普官网首页-「京东」电脑办公,笔记本/CPU/鼠标/键盘/打印机,应有尽有,一站购齐!
北京京东世纪信息技..广告
高中数学知识大全-高中九科全套重难点知识汇总资料下载
关注高中数学的都在看
高中数学知识大全,内容涵盖语文/数学/英语/政治/历史/地理/物理/化学/生物各门学科;各类知识点/试卷/习题/视频应有尽有,作文,听力,阅读专项突破
北京百家互联科技有..广告
相关问题全部
广告高中数学大全高考数学冲刺备考技巧,解题模板都在这了!
我将高中数学大全解题技巧总结为“12大招”“133个解题标志”,数学是能直接通过短时间补习提高分数的学科,“254个秒题方法”,跟我学快速提分。点击领取试听课程
572020-06-14
C语言中strlen()函数的意思?
strlen()是读取字符串长度的意思,举例如下 char a[]={'a','b','c'}; return strlen(a); 返回字符串a的长度,是3。 需要注意的是,strlen()函数需要的头文件。 如有疑问请您追问。
26 浏览12622017-12-15
在C语言中Strlen是什么意思?
Sizeof与Strlen的区别 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。 sizeof还可以用函数做参数,比如: short f(); printf("%d\n", sizeof(f())); 输出的结果是sizeof(short),即2。 4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。 5.大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因 char str[20]="0123456789"; int a=strlen(str); //a=10; int b=sizeof(str); //而b=20; 6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。 7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。 8.当适用了于一个结构类型时或变量, sizeof 返回实际的大小, 当适用一静态地空间数组, sizeof 归还全部数组的尺寸。 sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸 9.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址, 如: fun(char [8]) fun(char []) 都等价于 fun(char *) 在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小 如果想在函数内知道数组的大小, 需要这样做: 进入函数后用memcpy拷贝出来,长度由另一个形参传进去 fun(unsiged char *p1, int len) { unsigned char* buf = new unsigned char[len+1] memcpy(buf, p1, len); } 我们能常在用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度 看了上面的详细解释,发现两者的使用还是有区别的,从这个例子可以看得很清楚: char str[20]="0123456789"; int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。 int b=sizeof(str); //而b=20; >>>> sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。 上面是对静态数组处理的结果,如果是对指针,结果就不一样了 char* ss = "0123456789"; sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针,sizeof 获得的是一个指针的之所占的空间,应该是 长整型的,所以是4 sizeof(*ss) 结果 1 ===》*ss是第一个字符 其实就是获得了字符串的第一位'0' 所占的内存空间,是char类 型的,占了 1 位 strlen(ss)= 10 >>>> 如果要获得这个字符串的长度,则一定要使用 strlen
49 浏览130012017-10-15
c++ strlen函数干嘛用,能详细点吗
strlen()是计算一个字符串的有效数据长度。 从你问题补充看,这里写的有问题,因为str不能是int类型,这样就不是字符串了,strlen()也不能正常工作了。 char str[1000]; strcpy( str , "hello world" ); //给str赋值 int i=strlen(str) ; //得到str中数据的长度,此时为11 = 5+1+5 字符串一定会有一个结束符,strlen在计算时,就是从str的首地址位置,一直到遇到\0为止,计算字符个数。返回给调用者。详情可查阅百科。
84 浏览108282017-10-10
strlen函数
strlen函数的原理你都搞错了,其原型应该是这样的:int strlen(char *);它接受的是一个char*类型的参数,真不晓得你的这个是怎么传递进去的。 strlen计算字符串的长度例如"abc"的长度是3.但是实际上如果将其放到字符数组中的话,应该占4个元素。因为字符串是以字符'\0'结尾的,但是这个'\0'在我们的字符串是隐藏的,我们看不到。实际上是有的.例如: char a[4]="abc";//这里数组的元素个数至少应该是4,否则此字符串不叫字符串了,只能叫字符数组了。 strlen判断一个字符串的结束就是以其末尾的'\0'为界限。其实现代码可以模拟为以下: int strlen(char *p) { int i=0; while(*p++)i++; return i; } 所以他是不包括'\0'这个字符的。
561 浏览771992017-09-09
使用strlen()函数的问题
字符串和字符数组的区别:字符串用字符数组保存,表示的是字符数组首地址到第一个'\0'为止的内容。 你的程序里,strlen(a)等于7,其实是strlen越界访问了。在a的4个字节后面,有一些未使用的内存,那边前3个字节非0,第4个字节是0,所以合起来'\0'前面有7个非0字符。
42 浏览86392017-10-05
3评论
来到火星的小A2
迪丽热巴回答c语言题目...
nfngng2
char f[]="123456\01111";

int b=strlen(f);//b=6,因为遇到了'\0' ;这里输出是9啊
评论两句3103

strlen(char *)
作用:检测字符串实际长度。
如:char s[]="1234567";
int a=strlen(s);//a=7
实际上strlen(char *)检测的是'\0',strlen(char *)碰到'\0'就返回'\0'以前的字符数。

又如:
char f[]="123456\01111";
int b=strlen(f);//b=6,因为遇到了'\0'

char h[4]={'f','0',0,'h'} ;//注:不能写成char h[4]="f0\0h";因为以""括起来的为字符串,
它隐式的以'\0'结尾,而'\0'也占一个字节,所以应写为char h[5]="f0\0h"
int c=strlen(h);//c=2,因为遇到了'\0'(注意'0'不等于'\0',而0等于'\0')

strlen(char *)

作用:检测字符串实际长度。

如:char s[]="1234567";

int a=strlen(s);//a=7

实际上strlen(char *)检测的是'\0',strlen(char *)碰到'\0'就返回'\0'以前的字符数。
又如:

char f[]="123456\01111";

int b=strlen(f);//b=6,因为遇到了'\0'
char h[4]={'f','0',0,'h'} ;//注:不能写成char h[4]="f0\0h";因为以""括起来的为字符串,它隐式的以'\0'结尾,而'\0'也占一个字节,所以应写为char h[5]="f0\0h"

int c=strlen(h);//c=2,因为遇到了'\0'(注意'0'不等于'\0',而0等于'\0')

  • strlen()鍑芥暟鏄粈涔堟剰鎬?
    绛旓細strlen(char *)浣滅敤锛氭娴嬪瓧绗︿覆瀹為檯闀垮害銆傚锛歝har s[]="1234567";int a=strlen(s);//a=7 瀹為檯涓妔trlen(char *)妫娴嬬殑鏄'\0',strlen(char *)纰板埌'\0'灏辫繑鍥'\0'浠ュ墠鐨勫瓧绗︽暟銆傚張濡傦細char f[]="123456\01111";int b=strlen(f);//b=6锛屽洜涓洪亣鍒颁簡'\0'...
  • C璇█涓strlen()鍑芥暟鐨鎰忔?
    绛旓細strlen()鏄鍙栧瓧绗︿覆闀垮害鐨勬剰鎬锛屼妇渚嬪涓 char a[]={'a','b','c'};return strlen(a);杩斿洖瀛楃涓瞐鐨勯暱搴︼紝鏄3銆傞渶瑕佹敞鎰忕殑鏄紝strlen()鍑芥暟闇瑕<string.h>鐨勫ご鏂囦欢銆傚鏈夌枒闂鎮ㄨ拷闂
  • 鍦–璇█涓Strlen鏄粈涔堟剰鎬?
    绛旓細strlen涓篊璇█搴撳嚱鏁锛屽寘鍚簬string.h涓紝浣滅敤涓鸿绠椾竴涓瓧绗︿覆(瀛楃鏁扮粍)涓厓绱犵殑涓暟锛屽嵆浠庢暟缁勫ご閮ㄨ鏁帮紝鐩村埌閬囧埌瀛楃涓茬粨鏉熺\0涓烘锛岃鏁扮粨鏋滀笉鍖呮嫭\0銆傞渶瑕佹敞鎰忕殑鏄紝strlen骞朵笉鏄粷瀵瑰畨鍏ㄧ殑锛屽鏋滃湪浼犲叆鐨勫瓧绗︽暟缁勭殑鍚堟硶鑼冨洿锛屼笉瀛樺湪缁撴潫绗0锛岄偅涔坰trlen鍑芥暟浼氫竴鐩磋闂笅鍘伙紝瓒呭嚭鏁扮粍鑼冨洿锛屽嵆鍑虹幇...
  • strlen鍑芥暟鏄粈涔堟剰鎬?
    绛旓細strlen鎵浣滅殑浠呬粎鏄竴涓鏁板櫒鐨勫伐浣滐紝瀹冧粠鍐呭瓨鐨勬煇涓綅缃紙鍙互鏄瓧绗︿覆寮澶达紝涓棿鏌愪釜浣嶇疆锛岀敋鑷虫槸鏌愪釜涓嶇‘瀹氱殑鍐呭瓨鍖哄煙锛夊紑濮嬫壂鎻忥紝鐩村埌纰板埌绗竴涓瓧绗︿覆缁撴潫绗'\0'涓烘锛岀劧鍚庤繑鍥炶鏁板櫒鍊笺傚師鍨嬶細extern unsigned int strlen(char *s);锛屽湪Visual C++ 6.0涓紝鍘熷瀷涓簊ize_t strlen( const char...
  • c璇█涓strlen鏄粈涔堟剰鎬
    绛旓細strlen锛氳绠楀瓧绗︿覆闀垮害鐨勫簱鍑芥暟鍚銆俿tr锛氶氬父锛岀▼搴忓憳鍠滄鐢ㄥ畠浣 瀛楃涓 鍙橀噺鍚嶃傚畠鏄痵tring(鑻辨枃璇嶅瓧绗︿覆鐨勭缉鍐)銆俵en锛氶氬父锛岀▼搴忓憳鍠滄鐢ㄥ畠浣 鍙橀噺鍚嶃傚畠鏄 length(鑻辨枃璇嶉暱搴︾殑缂╁啓锛夈備緥濡傦細char str[20]="I am a student";int len;len = strlen(str);printf("the string length is: ...
  • C璇█涓殑strlen鍑芥暟
    绛旓細strlen()鍙槸缁熻瀛楃涓茬殑闀垮害锛岀粺璁″埌'\0'缁撴潫锛屼絾涓嶅寘鎷'\0'锛岃繖涓笌sizeof()涓嶄竴鏍枫傚浜庣敤鍙屽紩鍙峰紩璧锋潵鐨勫瓧绗︿覆锛岀郴缁熼粯璁ゆ渶鍚庝竴浣嶅瓧绗︿负'\0'锛屽浣犺嚜宸卞畾涔夌殑锛歝har a[]="china";char b[]={"china"};鍙﹀锛屾暟缁勫垵濮嬪寲杩樺彲浠ユ槸涓涓瓧绗︿竴涓瓧绗﹁祴鍊硷紝濡傦細char c[]={'c','h','i...
  • strlen()鍑芥暟杩斿洖鍑?
    绛旓細绛旀鏄疉 strlen()鍑芥暟鏄姹傚瓧绗︿覆鐨勯暱搴︼紝浣哱0鏄覆缁撴潫鐨勬爣蹇楋紝閬囧埌\0灏变細鍋滄锛屼笖瀛楃涓"abcd\0efg\0gh"涓惈鏈塡0锛屾墍浠strlen鍑芥暟璁℃暟a銆乥銆乧銆乨鍥涗釜鏁帮紝鐒跺悗鍋滄骞惰繑鍥炵粨鏋滐紝鏁呯粨鏋滄槸4锛岀瓟妗堥堿銆備笅鍥炬槸鐢╒C6.0杩愯璇ラ浠g爜锛屽緱鍒扮粨鏋滈獙璇丄鏄纭殑銆
  • c璇█涓strlen鍑芥暟鐨勪綔鐢ㄥ疄渚
    绛旓細strlen锛堬級浣滅敤鏄眰瀛楃涓查暱搴︼紝鑰屽瓧绗︿覆浠0涓虹粨鏉燂紝鎵浠ワ紝abcd\0ef\0g鍒扮涓涓猏0锛屽瓧绗︿覆灏辩粨鏉熶簡锛宎bcd闀垮害鏄4,鎵浠ヨ繑鍥炲间负4.
  • 鎴戞兂闂竴涓:strlen();瀹冩槸璁$畻鏁扮粍 (char a[10];)杩欎釜绫诲瀷鐨勫瓧鑺傛暟杩...
    绛旓細strlen鏄繑鍥炴暟缁勪腑浠"\0鈥濈粨灏剧殑瀹為檯鍐呭瀛楄妭鏁帮紝瑕佺煡閬撴暟缁勭被鍨嬬殑闀垮害鐢╯izeof鍑芥暟銆備妇渚嬪涓嬶細 char a[10] = "abc";int ret = 0;ret = strlen( a ) ;printf( "len=[%d]\n", ret ); /* 鎵撳嵃鍑烘潵搴旇涓 3 */ ret = sizeof( a );printf( "len=[%d]\n", ret )...
  • 鍏充簬c++涓眰瀛楃涓查暱搴︾殑鍑芥暟strlen鐨勫皬闂
    绛旓細strlen鍑芥暟鎵浣滅殑浠呬粎鏄竴涓鏁板櫒鐨勫伐浣滐紝瀹冧粠鍐呭瓨鐨勬煇涓綅缃(鍙互鏄瓧绗︿覆寮澶达紝涓棿鏌愪釜浣嶇疆锛岀敋鑷虫槸鏌愪釜涓嶇‘瀹氱殑鍐呭瓨鍖哄煙)寮濮嬫壂鎻忥紝鐩村埌纰板埌绗竴涓瓧绗︿覆缁撴潫绗'\0'涓烘锛岀劧鍚庤繑鍥炶鏁板櫒鍊(闀垮害涓嶅寘鍚"\0")銆俿trlen鍑芥暟绠浠嬶細鍘熷瀷锛歟xtern unsigned int strlen(char *s锛夛紱锛屽湪Visual C++ 6.0...
  • 扩展阅读:len()函数 ... strlen函数视频教程 ... strlen函数中 怎么计算 ... strlen(str)函数的功能 ... strlen使用规则 ... strlen和sizeof的区别 ... strlen用法 ... strlen n123 ... strlen包括\0吗 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网