strlen求字符串长度,
strlen求字符串长度,详细介绍
本文目录一览: strlen函数计算字符串长度
首先,你要明确:字符串结束的标志是\0。
其次,你要明白:\t,\v是转义字符,是字符常量。
最后,你要知道:strlen(
)函数的作用是测试字符串长度(不包括\0)。
char
s[10]
=
{
'A',
'\0',
'B',
'C',
'\0',
'D'
};
当运行strlen(s)时,从起始地址s开始扫描,到\0时结束操作,返回一个整型数1。
char
s[
]
=
"\t\v\\\0will\n";
在这个字符串中\0前面有3个转义字符\t\v\\,所以返回3。
char
s[
]
=
"\x69\082\n";
\x69
是一个转义字符,意思是十六进制的69在ASCII中所代表的字符。
遇到\0就表示该字符串结束,后面即使再长也都不参与计算……
所以第一的长度是1,
第二个的\是转移字符,\t表示一个字符,后面同理;
第三个x69是16进制数,其实还是一个字符
明白了么?
strlen遇到\0就结束,不继续往下计算长度了
1.答案1是因为第2个字符为\0,所以只计算了一个字符'A'
2.答案3是因为\t、\v、\\前面的\是表示转义符
3.答案1是因为\x69表示是16进制的数值
strlen的结果要在运行的时候才能计算出来,主要用来计算字符串的长度,不是类型占内存的大小,strlen只能用char*做参数,且必须是以''\0''结尾的。
1、第二个元素就是\0
所以得到字符串长度为1
2、\t
\v
\\都是转义字符,为三个字符,后面又是\0,所以长度为3
3、\x69就是16进制的69,十进制为105,查看ASCII表对应字符,而\xxx指的是一个八进制值所对应字符,但是\082显示不是,八进制只有0-7的数字,所以这里只是一个\0
和数字
82
字符串长度为1
如果要获得每个数组中有多少个字符可以考虑用sizeof
直接调用字符串函数strlen( ),求字符串长度
strlen的结果要在运行的时候才能计算出来,主要用来计算字符串的长度,不是类型占内存的大小,strlen只能用char*做参数,且必须是以''\0''结尾的。
1、第二个元素就是\0
所以得到字符串长度为1
2、\t
\v
\\都是转义字符,为三个字符,后面又是\0,所以长度为3
3、\x69就是16进制的69,十进制为105,查看ascii表对应字符,而\xxx指的是一个八进制值所对应字符,但是\082显示不是,八进制只有0-7的数字,所以这里只是一个\0
和数字
82
字符串长度为1
如果要获得每个数组中有多少个字符可以考虑用sizeof
求助c语言怎么用strlen计算输入字符串的长度
#include
#include
int main(){ int i = 0; char real_word[20]; printf("#######guess begin######\n"); printf("for first player , please enter your word !\n"); scanf("%s", real_word); //scanf_s 是需要三个参数的 一个是格式 一个是变量 第三个是大小 i = strlen(real_word); printf("%d", i);}#######guess begin######for first player , please enter your word !asdasdasd9Press any key to continue
scanf_s 第3个参数 要给长度 或 _countof(real_word),
例如 scanf_s("%s", real_word,19);
或用 scanf("%s", real_word);
因为你real_word里面什么东西都没有 所以是0呀
不要使用scanf_s进行读入
用fgets或者gets
scanf_s("%s", &real_word)
直接调用strlen即可。
strlen原型为
int strlen(char *str);
功能为求str的长度,并返回。
于是计算输入字符串长度的代码可以写作
char str[1024];int len;scanf("%s",str);//输入字符串。len = strlen(str);//计算长度并存于len中。
在C语言中Strlen是什么意思?
strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
函数原型:
extern unsigned int strlen(char *s);
在Visual C++ 6.0或Dev-C++中,原型为
size_t strlen(const char *string);
,其中size_t实际上是unsigned int,在VC6.0或Dev-C++中可以看到这样的代码:
typedef unsigned int size_t;
头文件:string.h或cstring
格式:strlen (字符指针表达式)
功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内
扩展资料
实例——
(在 Dev-C++ 5.11中运行通过)
//#include
//C++万能头文件
#include
#include
#include
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
char s[10000]="Hello, World!";
cout << s << "has" << strlen(s) << "character(s)." << endl;
//printf("%s has %d character(s).",s,strlen(s));
//getchar();
return 0;
}
运行结果为:
Hello, World! has 13 character(s).
Sizeof与Strlen的区别
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
2.sizeof是算符,strlen是函数。
3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。
sizeof还可以用函数做参数,比如:
short f();
printf("%d\n", sizeof(f()));
输出的结果是sizeof(short),即2。
4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。
5.大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因
char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;
6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。
7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。
8.当适用了于一个结构类型时或变量, sizeof 返回实际的大小,
当适用一静态地空间数组, sizeof 归还全部数组的尺寸。
sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸
9.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,
如:
fun(char [8])
fun(char [])
都等价于 fun(char *)
在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小
如果想在函数内知道数组的大小, 需要这样做:
进入函数后用memcpy拷贝出来,长度由另一个形参传进去
fun(unsiged char *p1, int len)
{
unsigned char* buf = new unsigned char[len+1]
memcpy(buf, p1, len);
}
我们能常在用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度
看了上面的详细解释,发现两者的使用还是有区别的,从这个例子可以看得很清楚:
char str[20]="0123456789";
int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。
int b=sizeof(str); //而b=20; >>>> sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。
上面是对静态数组处理的结果,如果是对指针,结果就不一样了
char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针,sizeof 获得的是一个指针的之所占的空间,应该是
长整型的,所以是4
sizeof(*ss) 结果 1 ===》*ss是第一个字符 其实就是获得了字符串的第一位'0' 所占的内存空间,是char类
型的,占了 1 位
strlen(ss)= 10 >>>> 如果要获得这个字符串的长度,则一定要使用 strlen
strlen():返回一个串有多少个字符
sizeof():返回某类型占几个字节。如:int a;则sizeof(a)返回值为2。如果有定义float x;则sizeof(x)返回值为4.
strlen是求字符串实际长度的意思,例如char *str=“hello world”。则strlen[str]的返回值是11.sizeof是用来求一个变量所占的内存的。
strlen是库函数,计算字符串长度。
sizeof是操作符,计算变量长度。
strlen是求字符串的长度,但不包括字符串的null结束符。
strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\0为止,计数结果不包括\0。
需要注意的是,strlen并不是绝对安全的,如果在传入的字符数组的合法范围,不存在结束符\0,那么strlen函数会一直访问下去,超出数组范围,即出现越界访问。所以使用strlen时,程序员必须确认参数字符数组中包含\0值,否则会出现不可预知后果。
扩展资料:
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
sizeof是取字节运算符(关键字),strlen是函数。
sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。
参考资料来源:百度百科-strlen
c语言求字符串长度,的函数理解?
while(*t++);这句是核心
*t是指向一个字符的指针,当结束的时候,while判断为否,结束循环,否则,t++指向下一个内存单元。
最后t放在字符串末尾的下一个(字符串末尾的下一个就是第一个'\0')
于是t-s的结果就是字符串的长度加上'\0' 于是再减去1 得到字符串的长度。
指针t指向的是字符串s的第一个字符,然后指针自增(不断指向下一个字符),同时*t是指这时指针指向的字符,如果不为空字符,说明还没到字符串最后,指针继续自增。当到最后一位时这时由于字符为空,循环退出。这时t-s-1是字符长度了。s是起始位
s是字符串开始的地址,t不断向后,直到字符串结尾的‘\0’,因此字符串长度=尾地址-首地址+1
C语言中字符串长度的函数是strlen(),一个字符的长度为1;
函数原型:
unsigned int strlen (char *s);头文件:
#include
参数说明:s为指定的字符串;
功能说明:strlen()用来计算指定的字符串s 的长度,不包括结束字符'\0';
返回值:返回字符串s 的字符数;
注意:strlen() 函数计算的是字符串的实际长度,遇到第一个'\0'结束。
示例:
#include
#include
int main(){ char str[] = "ab\nxyz";//\n为回车字符,占一个字节 printf("strlen(str)=%d\n", strlen(str)); return 0;}//输出结果:strlen(str)=6 收起
C语言strlen()函数,返回字符串长度?
因为在这里分析的难点是,第一个字符串的长度就是六。分析如下,第一个字符是两条斜杠,第二个字符是斜杠双引号,第三个字符是a,第四个字符是斜杠n,第五个字符是百分号,第六位字符是字母f。然后再用字符串连接,加上第二个字符串的五个字符,所以总的字符串长度就是6+5,等于11
输出结果之前,先把两个字符串拼接。字符串a[]包含6个字符, “CHINA”包含5个字符,总共是11个字符。
字符串长度怎么算
其回答中“你好123”的字符长度应该为7.而字符个数有8个,加上结束标志,一个中文字符,相当于两个字符,占两个字节
C语言的字符串是由字符数组形式保存的,并约定'\0'(ascii码值为0)作为字符串结束符。
其长度为从字符串开始,到'\0'结束,所有字符的个数,不包括'\0'本身。
要获得字符串长度,有两种方法可以使用:
使用库函数strlen()。
strlen声明在string.h中,原型为int strlen(char *str);
功能为求str的长度,并返回。
根据定义求长度。
对于字符串str, 可以用如下代码求长度:
int len;
for(len = 0; ; len ++)
if(str[len] == '\0')break;
当str[len]为0时,退出循环,退出后的len值就是str的长度。
长度为从字符串开始,到'\0'结束,所有字符的个数,不包括'\0'本身。
C语言的字符串是由字符数组形式保存的,并约定'\0'(ascii码值为0)作为字符串结束符。
strlen计算的是字符串的长度,单位是“字符”,只能对字符串运算,而且它是函数(不是运算符),计算时,不包含末尾的"\0";当对字符数组操作时,返回的是数组总存放的字符串的实际长度(也就是\0之前的),也就是当把数组作为参数传递给strlen时是会退化成char*指针的。
扩展资料:
strlen() 函数用于计算字符串的长度。
算出字符串 "Hello world!" 的长度:
<!--?phpecho strlen("Hello world!");
?>
以上代码的输出:
12字符串的长度信息常常用在循环或其他函数中,因为那时确定字符串何时结束是很重要的(例如,在循环中,我们需要在字符串中的最后一个字符之后结束循环)。
参考资料来源:百度百科-strlen
strlen(China )的值是多少?
strlen是计算字符串长度,不包括字符串结束符,该问题主要是'\n'的问题,'\n'不是字符串结束符,那么就会在计算内,且'\n'为转义字符,为单个字符,所以strlen('China\n')结束为6。strlen是求字符串长度的函数。函数原型:unsigned int strlen(char *s);参数:s是char类型的指针,指向要求长度的字符串返回值:返回字符串的长度,返回类型是无符号整型注意:strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含“\0”)。实例:#include#includeint main(void){char*s="GoldenGlobalView";printf("%s has %d chars",s,strlen(s));getchar();return 0;}
如何求字符串长度?
这个字符串长度为10个字符。
可以用strlen("ab'1'\\\12803")来求这个字符串的长度。
也可以用sizeof("ab'1'\\\12803")来求,但是这个求出的结果是多了一个字符串结束符\0。
可以试着输出这个字符串看看是不是10个字符。
strlen()函数判断的字符串长度是以\0为结尾作为标志的。
当char * m=new char[TOKEN_LENGTH]后,虽然为指针分配了地址,但是其指向的内容未被初始化,所以m指向的内容是未知的,可能在第24个字符的位置发现了\0所以strlen()显示长度为24。
数据类型
字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。在某些语言中它们可作为基本类型获得,在另一些语言中做为复合类型获得。多数高级语言的语法允许通常用某种方式引用起来的字符串来表示字符串数据类型的实例;这种元字符串叫做“文本”或“字符串文本”。
以上内容参考:百度百科-字符串