c语言 计算字符串长度

如题所述

C语言的字符串是由字符数组形式保存的,并约定'\0'(ascii码值为0)作为字符串结束符。其长度为从字符串开始,到'\0'结束,所有字符的个数,不包括'\0'本身。

要获得字符串长度,有两种方法可以使用,使用库函数strlen()。strlen声明在string.h中,原型为int strlen(char *str);功能为求str的长度,并返回。对于字符串str, 可以用代码求长度。当str[len]为0时,退出循环,退出后的len值就是str的长度。

拓展资料:使用strlen函数,包含在头文件string.h里,功能就是计算字符串s的(unsigned int型)不包括'\0'在内的长度。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-01

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()求解由函数的形参传入的字符数组的长度时,得到的结果为指针的长度,既对应变量的字节数,而不是字符串的长度,此处一定要小心。

第2个回答  2018-01-02
作者你好!
首先要分清楚:字符数组和字符串的关系!
字符串存放在数组中,因此,一个字符数组可以存放几个串,单字符串函数只认字符串结束标志'\0';
1. strlen(wer wer):字符串为"wer_wer"这种字符串常量,系统会在其后自动补上'\0';而求字符串长度的函数strlen()只要遇见'\0';就返回函数值!而且'\0'不算在其中!故返回值为7(空格也算一个字符!)
2. strlen(wer\0wer) 其中的字符串为"wer\0wer"而strlen函数遇到'\0'即结束,故返回值为:3
3. '\0'不是空格,也不是回车!通过ASCII码表,你可知道,'\0'是ASCII码值代表0(NULL);而空格的ASCII码为: '\32' 32 回车的ASCII码值为'\13' 13
希望对你有所帮助!!!!

=============================================================Mr_Compuerr
第3个回答  2008-05-04
你的代码出现问题的原因是scanf("%s",&a); ,a是一个char类型的变量,系统为它分配了一个字节的内存空间,但是你却输入了一个字符串到以a的地址为首地址的一段连续的内存空间里,这样就出现了越界错误.但是printf函数并不检查越界错误,它会按正常的方法执行,然后程序统计出长度,打印出来结果.但是返回到调用main函数的操作系统后,系统会发现越界错误,所以在结果显示出来后才出错.至于你说的输入5个以下不会出错,也许是偶然,也许跟你的编译器有关.我用VS2005测试,只要输入就会出错。
如果你是只想求出输入的字符串的长度而不要求保存输入的字符串,下面的代码更好。你的标准输入缓冲区有多大,那么它就可以求出多长的字符串的长度,不会有越界。

#include<stdio.h>

int main()
{
int len=0;

//getchar()函数从标准输入设备(即键盘)接收一个字符,返回该字符的ASCII码.因为回车被输入时被转换成换行符(LF,ASCII码为10),所以getchar()返回10时就知道输入结束了.
while(getchar()!=10) len++;
printf("It's length is %d.\n",len);
return 0;
}
第4个回答  2015-09-25

C语言的字符串是由字符数组形式保存的,并约定'\0'(ascii码值为0)作为字符串结束符。

其长度为从字符串开始,到'\0'结束,所有字符的个数,不包括'\0'本身。

要获得字符串长度,有两种方法可以使用:

1 使用库函数strlen()。

strlen声明在string.h中,原型为

int strlen(char *str);

功能为求str的长度,并返回。


2 根据定义求长度。

对于字符串str, 可以用如下代码求长度:

int len;
for(len = 0; ; len ++)
    if(str[len] == '\0')break;

当str[len]为0时,退出循环,退出后的len值就是str的长度。

相似回答