百度
360搜索
搜狗搜索

strlen函数用法举例,strlen函数详细介绍

本文目录一览: 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'

阅读更多 >>>  strcmp(a,C语言这段strcmp代码是什么意思

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(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

C语言中strlen(s)是什么意思?S是一个数组!

strlen(s):通常用来计算字符串s的长度
如:
char s[256];
memset(s,'\0',sizeof(s));
strcpy(s,"12345678");
那么strlen(s)的结果为:8
strlen是C语言标准库提供的一个函数,给你提供strlen的一个版本,你就明白其中的s是什么意思了。
size_t strlen(const char *s)
{
const char *sc;
for(sc = s; *sc != '\0';++sc)
;
return (sc-s);
}
那s[]一定是个char的数组。具体来说,s是一个数组的首地址。
strlen(char*)的形参只能是指针。
数组长度
s真正占用的内存打下,不是数组
strlen(s)表示求字符串s的长度。
strlen函数原型:int strlen(char *s);
头文件:string.h
格式:strlen (字符数组名)
功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内
说明:返回s的长度,不包括结束符NULL。
参考代码:
#include

#include

int main(){ char s[100]="GoldenGlobalView"; printf("%s has %d chars",s,strlen(s)); return 0;}/*运行结果:GoldenGlobalView has 16 chars*/

C语言中strlen()函数的意思?

strlen()返回参数字符串的长度
strlen()是读取字符串长度的意思,举例如下
char a[]={'a','b','c'};
return strlen(a);
返回字符串a的长度,是3。
需要注意的是,strlen()函数需要

的头文件。

如有疑问请您追问。

c语言中strlen是什么意思

是一个标准库函数。功能:计算字符串s的长度,但是不包括'\0'在内。
当头文件包含了
#include

该函数就能使用了。

例如 char *s="hello";

int i=strlen (s);

printf("%d\n",i);输出的为5 因为字符串"hello"一共有五个字符。

是一个库函数。定义在

中。用处是求字符串的长度。

strlen是函数

strlen()函数的作用是统计给定字符串的长度。

标准函数 求字符串长度

strlen:计算字符串长度的库函数名。

str:通常,程序员喜欢用它作 字符串 变量名。它是string(英文词字符串的缩写)。

len:通常,程序员喜欢用它作 变量名。它是 length(英文词长度的缩写)。

例如:

char str[20]="I am a student";

int len;

len = strlen(str);

printf("the string length is: %d",len);

扩展资料:

函数原型

extern unsigned int strlen(char *s);

在Visual C++ 6.0或Dev-C++中,原型为size_t strlen(const char *string);,其中size_t实际上是unsigned int,在VC6.0或Dev-C++中可以看到这样的代码:

typedef unsigned int size_t;头文件:string.h或cstring

格式:strlen (字符指针表达式)

功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内

说明:返回s的长度,不包括结束符NULL。

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

参考资料来源:百度百科-strlen (C/C++语言函数)

C语言中strlen函数是怎么计数的?

C里有转义符,比如象\\(表示\符号本身),\"(表示"本身)、\t(跳格符),\n(换行),还有\ddd(8进制表示) 以及\xdd(16进制字符),这些都视为单个字符,所以象你第一题就是
\t
a
b
\n
\012
\\
\"
一共这7个字符,后面的都是一样的,另外 strlen是计算\0之前的字符长度,所以象第4题\0前有4个字符,那长度就是4
统计字符串长度的函数,返回一个是指定整形数字,
从开头数数,多少个字符就返回对应的数值,
常用在计算字符串长度,字符数组的个数,指针字符串的长度等!
从开始数,直到遇到字符'\0','\0'之前有几个字符,就返回几
char str[]="\tab\n\012\\\""
字符1: \t 转义字符:水平制表符 ,其ASCII 值9(十进制)
字符2、3:ab
字符4:\n 转义字符,换行符,其ASCII 值10(十进制)
字符5:\012 转义字符,其中012是8进制数,其ASCII值 同\n.
字符6:\\ 转义字符 反斜杠\,其ASCII值 92(十进制)
字符7:\" 转义字符 双引号",其ASCII值 34(十进制)
2. printf("%d \n", strlen("IBM\n012\1\\"));
字符1、2、3: IBM
字符4:\n 转义字符
字符5、6、7:012
字符8:\1 其ASCII值 1(8进制).
字符9:\\ 转义字符 反斜杠\,其ASCII值 92(十进制)
3. printf("%d \n",strlen("\t\"\065\xff\n"));
字符1: \t 转义字符:水平制表符 ,其ASCII 值9(十进制)
字符2:\" 转义字符 双引号",其ASCII值 34(十进制)
字符3:\065 ,代表字符5,其中065为8进制 格式,其ASCII为53(十进制)
字符4:\xff (这个我不知道怎么解释,请其它老师帮助解释)
字符5:\n
4. printf("%d \n",strlen("stop\0\n\""));

阅读更多 >>>  二维数组定义格式,二维数组变量定义

字符1、2、3、4:stop
因为strlen()函数遇到\0 就结束了,后面的字符就不去判断了。
C语言中的字符串 是用\0作为 结束符。
希望我的解答 对你有所帮助,很高兴和你一起讨论和学习C语言。

C语言中strlen()函数和sizof()函数分别怎么用?区别是什么

strlen函数的参数是字符串,而sizeof函数的参数是类型或者变量,如果传入的是变量,则返回的是变量类型的大小,如果传入的是数组,则返回的是数组类型的大小乘以数组的元素个数,如果传入一个字符串指针,返回的是指针的大小。这两个新手容易混淆。如果仍有什么不明白,请追问。
记得采纳啊
本来不想发言的,但看到楼上的回答说strlen()计算字符串时连'\0'也算上,我顿时无语。 那你调试一下看看,看看是不是算上'\0'? strlen()是遇到'\0'就结束计算,是不计'\0'的。这一点要记住。 sizeof()是计算变量或者类型占用内存空间的字节数。 如果有 char str[] = "asdfg"; printf("%d\n", strlen(str)); printf("%d\n",sizeof(char)); printf("%d\n",sizeof(str)); 结果会是 5 1 6 从上面就可以看出strlen()是不计'\0' char是类型,可以用sizeof()操作,char占用一个字节 因为str是变量,所以可以用sizeof()计算它占用内存的字节数,又一个字符是占用一个字节内存,所以数组str占用6个字节 以上就是sizeof()和strlen()使用的区别
strlen() 是统计字符串的长度,要加上'\0'例如strlen("abcd");这时返回值是5因为还有一个'\0' sizof()是统计一个字符串占用的字节数例如sizeof("abcd");这里返回值是4,它不加最后的'\0'
简单的说 strlen() 是统计一个字符串有几个字符,这时要算上'\0'。 sizof()是统计一个字符串占用了几个字节
strlen是求字符串的大小,sizeof是求变量占的内存的大小
1、用法:
strlen(char* pstr);//求的是字符串的实际长度
sizeof(类型说明符,数组名或表达式) 或sizeof ( 变量名)
比如说有以下数据类型:int arr[10] ,a; char *str="hello world"; sizeof(arr)/sizeof(a)/sizeof(str)都是可以的,但是只能使用strlen(str),而不能strlen(arr);
2、区别:
2.1 sizeof()是C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。
2.2 strlen()求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
总结的说来sizeof的适用范围更广,但是在返回实际的字符数组中的数据是,strlen()更方便,因为它返回的是实际的字符串长度,而sizeof是返回数组大小。

C语言中 strlen函数用法的问题

虽然只有两个%d 但是不要忘了 那个*号 这个是输出宽度
因此 是4个参数
Please input your firstname and sumame.1234
123456
1234 123456.
4 6
Press any key to continue

用长度做个长度参数输出的宽度 不知道你能听明白吗?
printf("%*d%*d\n",
strlen(firstname) 对应第一个*
,strlen(firstname) 对应第一个%d
,strlen(sumame), 对应第二个*
strlen(sumame));对应第二个%d
经过调试发现
%*d 后面跟两个参数

printf("%*d",a,b);
a表示打印的宽度,接着就是输出b的值
楼上说对了。。。
b[10],这个10是数组的大小,可以用sizeof来查看b的大小
strlen,用于确定字符串的长度,和数组大小无关,哪怕常常使用数组来存储字符串。它会从字符串首字符开始向后搜索,直到遇到
终止符
0。所以虽然输入了20个字母造成了溢出,却不妨碍strlen得到正确的长度
如果学会基本的调试操作,就可以直接在内存中查看字符串的值,没必要输出来看了
字符数组就是字符串,在存储方式上没啥区别。
但如果用strlen来获得字符串长度的话,是找到第一个0值就认为字符串结束了。
char
p[]={‘0’,‘1’,‘2’,‘3’,‘4’};这样的用strlen返回值是0。
其实要想知道一个存储单元的大小,应该用sizeof。比如刚才题的答案是sizeof(p)=4
这是因为4后面的\0和之后的56连起来成\056,被解释为八进制ASCII码'.',所以str实际上成了“1234.789\0",所以它的长度刚好是8字节。希望对你有帮助。
printf("%*d%*d\n",strlen(firstname),strlen(firstname),strlen(sumame), strlen(sumame));
这个是输出匹配的问题。
举个例子
printf("%5d",5); 就会给你5个空间输出5,前面4个空格,然后输出5.
printf("%*d",5,5);和上面一样,利用*匹配5控制输出宽度。就是四个空格5.
同理上面的第一个strlen是作为输出宽度而存在的,也就是说给你字符串长度个空间,用于存放字符串长度的变量。
比如输入
we
women
就相当于
printf("%*d%*d",2,2,5,5);
相当于
printf("%2d%5d",2,5);输出 【1个空格】2【4个空格】5

strlen函数

strlen函数所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含"\0")。
基本简介
原型:extern unsigned int strlen(char *s);,在Visual C++ 6.0中,原型为size_t strlen(const char *string);,其中size_t实际上是unsigned int,在VC6.0中可以看到这样的代码:typedef unsigned int size_t;
头文件:string.h
格式:strlen (字符数组名)
功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内
说明:返回s的长度,不包括结束符NULL。
相关函数:
TCHAR.H routine _UNICODE & _MBCS not defined_MBCS defined_UNICODE defined_tcslen
程序举例
举例1:(在Visual C++6.0中运行通过)
#include

#include

int main(void)

{

char *s="Golden Global View";

printf("%s has %d chars",s,strlen(s));

getchar();

return 0;

}

首先要声明,strlen(xx[i])反回的值是0,因为你的xx还没有初值。你应该在readDat()的while循环中测试一下,是否读入了数据到xx数组中,在while中使用printf输出xx数组就知道了。应该是strlen反回0导至的错误。因为不了解你的那个dat文件中9近是什么内容,因此不好判断

程序主要错在第一个for语句for(j=1;j<(strlen(xx[i])-2);j=j+2)中的(strlen(xx[i])-2)这一句。

因为strlen()函数的反回类型为unsigned

int(无符号整型),因此再进行strlen(xx[i]-2的时候得到的是一个负数-2,而unsigned

int是无法表示负数的,因此就被计算机转换为补码的形式来表示-2了,,也就是十进制数的4294967292,二进制形式是11111111110(具体多少个1自已算,反正前面全是1)

你可以把strlen(xx[i])强制转换为int型来测试,比如(int)strlen(xx[i]-2这样的话就能得到正确结果了。

1.xx[2][8]的内存是连续分配的

2.

01234567

0dAe,BfC.

1CCbbAA\0

本来在第一行最后应该是\0的,但是位置占满了,所以\0就到第二行了(由于内存的连续分配)

但是继续向第二行写数据的时候,C就把第一行的\0覆盖了,到最后再加上第二的\0

而strlen只认起始字符d然后开始数,直到\0为止

所以把dAe,BfC.CCbbAA都数上了,数到第二行的\0结束,所以是14个

int是占两字节,因为是数组,分配的是3个int所以应该是6字节

打印应该是2吧,strlen计算字符结果是不含\0的

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'这个字符的。

C语言strlen

strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间;
所以strcpy(s1,s2)执行后s1="24";输出strlen(s1)=2;
如果想实现字符串连接应该用strcat;
int main(int argc, char *argv[]) {
char s1[20]="135",s2[20]={"24"};
strcpy(s1+strlen(s1),s2);
printf("%d\n",strlen(s1));
return;
}
字符串s2复制到s1, s1=s2="24", strlen=2
strcpy(char *dst,char *src)
strcpy(s1,s2); 将s2复制到s1中,s2内容不变,s1变为“24”
看图

网站数据信息

"strlen函数用法举例,strlen函数"浏览人数已经达到17次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:strlen函数用法举例,strlen函数的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!