
将char str[]数组的首地址传入到stringlen这个方法中;当i=0;时,将s[0]与‘\0'比较是否相等,如果不等运行循环里面的代码,接着开始第二个即s[1]与'\0'比较,以此类推,直到s[i]的值与’\0'相等结束,而每次不相等时len都会加1,最终得出的len就是字符串的
长度
。首先要分清楚:字符数组和字符串的关系。
字符串存放在数组中,因此,一个字符数组可以存放几个串,单字符串函数只认字符串结束标志'\0'。
1 strlen(wer wer):字符串为"wer_wer"这种字符串常量,系统会在其后自动补上'\0';而求字符串长度的函数strlen()只要遇见'\0';就返回函数值!而且'\0'不算在其中!故返回值为7(空格也算一个字符!)
2 strlen(wer\0wer) 其中的字符串为"wer\0wer"而strlen函数遇到'\0'即结束,故返回值为:33 '\0'不是空格,也不是回车!通过ASCII码表,你可知道,'\0'是ASCII码值代表0(NULL);而空格的ASCII码为: '\32' 32 回车的ASCII码值为'\13' 13
string类有两个函数可以求长度。这两个函数完全等价。
size_t size() const noexcept;
size_t length() const noexcept;
这里返回类型size_t是一个无符号整形,具体实现由编译器决定,但应保证可以存放下理论上可能存在的对象的最大大小,该对象可以是任何类型,包括数组。const表示作为常量的string对象(const string)也可以调用这个函数。noexcept表示这个函数不会抛出异常。样例:(摘自cpluspluscom)// string::length
#include <iostream>
#include <string>
int main ()
{
std::string str ("Test string");
std::cout << "The size of str is " << strlength() << " bytes\n"; //length()换成size()也可以
return 0;
}
sizeof()得到的是数据类型的长度,比如int、char、double类型的sizeof()得到的结果分别是4、1、8要求字符串长度可以用类函数size,即你程序里的string类型的变量为i,则用isize()来求i的长度。
1、在c语言中,可以通过库函数strlen来计算字符串的长度,也可以通过循环计数来求取字符串长度。
函数原型:unsigned
int
strlen(char
str);
功
能:统计字符串str中字符的个数,不包含'\0'
返
回
值:返回字符个数
2、用strlen函数实现:
char str[20];
int len; // 保存数组的长度
scanf("%s", str);
len = strlen(str); // 计算字符数组str的长度
注:需将头文件#include
添加进源文件中。3、用循环来实现:
char str[20];
int len=0; // 保存数组的长度
scanf("%s", str);
while(str[len] != '\0') // 未检测到结束字符
{
len++; // 统计字符数组str的长度
}
int stringlen(char s) // 这个函数的命名可以规范些,如 StringLen[推荐]
{
int i = -1;
if (s==null) return i; // 如果s为空,则返回-1
for (i=0;s[i] != '\0';i++); // 一直找到字符串结束标志'\0',循环结束
return i-1; // 返回不包括字符串结束标志的长度
}
// 要理解的概念
// 1 指针 2字符 3数组 4字符数组 6字符指针
// 6字符串在C语言中的实现方式(1字符数组 2字符指针)
sizeof():返回某类型占几个字节。如:int a;则sizeof(a)返回值为2。如果有定义float x;则sizeof(x)返回值为4
欢迎分享,转载请注明来源:内存溢出

