本文主要介绍了C语言中计算字符串长度的几种方法,具有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。
目录
计算字符串长度的几种方法。自定义函数使用字符串头文件中的strlen()函数来计算字符串的长度。sizeof()运算符用于计算字符串的长度。使用sizeof和strlen的凹坑由strlen和sizeof计算。
计算字符串长度的几种方式
c语言计算字符串长度,可以手工计算,也可以使用库函数或sizeof()运算符计算。
对自定义函数的长度使用strlen()函数和sizeof()运算符。
自定义函数
int cont_str(char *s)
{
int I=0;
while ( str[i ]!='\0');
return-I;
}
使用string头文件中的strlen()函数
strlen(str);//假设str是要查找的字符串数组名
使用sizeof()操作符
int len=sizeof(str)/sizeof(str[0])-1;//假设str是要查找的字符串数组名
注意:
strlen()函数得到的字符串长度是有效长度,字符串末尾不包含终止符' \ 0 ';sizeof()运算符计算的长度在字符串末尾包含终止符“\ 0”;
用sizeof()求解函数形参传入的字符数组长度时,结果是指针的长度,对应的是变量的字节数,而不是字符串的长度。在这里要小心。(当一个数组或者一个字符串(可以理解为数组)作为函数参数时,会被当作指针使用。指针的长度由编译器决定,大部分是4字节。)
例如:
void strlen(char* str)
{
int长度;
length=sizeof(str)/sizeof(str[0]);//str是4个字节,str[0]=1
}
计算字符串长度,使用sizeof和strlen的坑
最近刷leetcode遇到了很多字符串处理问题。我经常需要计算字符串长度。踩了很多坑,分享一下。
使用strlen计算
1.参考字符串. h
2.在声明一个字符串时,如果同时初始化它,就需要有足够的空间来存储“\ 0”。
解释一下就是:
例如:
char str[]=' 12345 ';//同时声明和初始化
此时,字符串中实际存储的是“12345\0”。此时strlen(str)遇到' \ 0 ',停止基数,返回数组长度5;
如果char str[5]='12345 ',字符串中实际存储的是“12345”,没有多余的空间存储' \ 0 ',strlen(str)返回一个无意义的随机值(我是这么认为的)。也就是说,如果定义的字符串长度实际上是1,strlen函数就没有意义,不能使用。
相反,如果定义的字符串长度=实际字符串长度为1,则结果是正确的。
使用sizeof计算
1.sizeof(str),其中str必须是字符数组名。如果传入一个char指针(不包括*),则返回的指针类型的宽度必须是4。
假设定义了字符串char *str,则区分sizeof(*str)等价于返回1的sizeof(char),sizeof(str)等价于返回4的sizeof(char *)。没有办法激活字符串长度。
2.sizeof返回该字符串占用的内存大小。
char str[20]=' 12345 ';Sizeof(str)返回20;
Char [2]=' 12345 ',sizeof (str)返回2;
Char []=' 12345 ',sizeof (str)返回6,其中包含隐含的' \ 0 '字符;
以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。