unsigned
char是无符号字符变量,不是字符串,长度
为一字节。strlen的参数必须是字符串,即以'\0'结尾的字符数组
。
对于unsigned
char
c[100]来说,要想用strlen(c)求出c的长度,就必须在数组末尾加'\0'字符。可以直接读写指定数组元素,如c[50]='\0',也可以在定义时初始化成字符串,如
unsigned
char
c[100]="hello,world!";
编译器会自动在感叹号后面一个数组元素写入'\0'。
char数组长度取决于自己定义的长度
在给它赋值时也会产生变化
例如: char s[] = "Hello world!";
你数一下字符个数只有12个,但是这时你调用sizeof(计算目标大小的函数)
printf("%d\n",sizeof(s));
但是输出结果是13,你在赋值是用""将Hello world!圈住,就会理解为一行字符串,在末尾会自动带上一个\0
而char数组的长度一般和你自己定义有关,char a[10];那么长度就是10(占用也是10,char型只占用1字节大小)
假如你的意思是"char数组中有字符的成员长度"可以使用strlen函数对这个char型数组进行统计。
char类型的是占两个字节;
一个字节是8位(bit),所以也可以表示为16bit。
可以通过以下方式定义一个char类型:
char
c
=
'a';
实际占一个字节。
char
d
=
'高';实际占两个字节。
扩展:计算一个字符串的字节长度。
如:”我是gdb“占的字节数就是2+2+1+1+1
=7个字节。
怎么计算char类型的大小
首先,这样编程是有风险的,因为你定义的数组没有进行初始化,也就是说 你数组中可以是任何数据,可能是字母,可能是数字,都不确定,放到实际工程项目中,容易造成内存泄漏或溢出
其次,strlen获取的是字符串长度其中不包括结束符/0 所以,第一个输出9说明这时数组中刚好有9个元素
如果你初始化数组为0后,打印应该是11,因为数组是从0算起的
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的长度
}
评论列表(0条)