C语言计算字符串长度,可以手动计算也可以使用库函数或者sizeof()操作符。
方法:
自定义函数求长度
使用strlen()函数
使用sizeof()操作符
自定义函数:
int cont_str(char *s)
{
int i = 0
while ( str[i++] != '\0')
return i
}
使用string头文件中的strlen()函数:
strlen(str)//假设str为待求的字符串数组名
使用sizeof()操作符:
sizeof(str)/sizeof(str[0])//假设str为待求的字符串数组名
注意:strlen()函数求出的字符串长度为有效长度,既不包含字符串末尾结束符 ‘\0’;
sizeof()操作符求出的长度包含字符串末尾的结束符 ‘\0’;
当在函数内部使用sizeof()求解由函数的形参传入的字符数组的长度时,得到的结果为指针的长度,既对应变量的字节数,而不是字符串的长度,此处一定要小心。
这个字符串长度为10个字符。你可以用strlen("ab'1'\\\12803")来求这个字符串的长度。
也可以用sizeof("ab'1'\\\12803")来求,但是这个求出的结果是多了一个字符串结束符\0。
你可以试着输出这个字符串看看是不是10个字符。
实际上,这10个字符分别为:
1、a
2、b
3、'
4、1
5、'
6、\\(\\表示:前一个表示这是一个转义字符,后一个才是字符串中的真实字符)
7、\12(同上,\表示这是一个转义字符,其后面的1~3个数字位是一个八进制数,在这里,第3个数字为8,所以它不是这个八进制数的一部分,即这个八进制数应该是12,转换为10进制数即为10,对应的ASCII码为一个换行符)
8、8
9、0
10、3
注:\用来说明一个转义字符,如\\表示反斜杠字符“\”,\ddd表示1~3位八进制数所代表的字符(ASCII码),\xhh表示1~2位十六进制数所代表的字符。