在C语言中Strlen是什么意思? C语言中%c是什么意思

作者&投稿:赤伟 (若有异议请与网页底部的电邮联系)

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



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<bits/stdc++.h>//C++万能头文件

#include<iostream>

#include<cstring>

#include<cstdio>

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是用来求一个变量所占的内存的。

c语言中strlen是什么意思~

strlen:计算字符串长度的库函数名。
str:通常,程序员喜欢用它作 字符串 变量名。它是string(英文词字符串的缩写)。
len:通常,程序员喜欢用它作 变量名。它是 length(英文词长度的缩写)。
例如:
char str[20]="I am a student";
int len;
len = strlen(str);
printf("the string length is: %d",len);

扩展资料:
函数原型
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'在内
说明:返回s的长度,不包括结束符NULL。
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
参考资料来源:百度百科-strlen (C/C++语言函数)

在C语言中Strlen是什么意思?
答:strlen是求字符串的长度,但不包括字符串的null结束符。strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\0为止,计数结果不包括\0。需要注意的是,strlen并不是绝对安全的,如果在传入的字符数组的合法范围,不存在结束符...

关于C语言的.strlen(a[1])是什么意思,用处是什么?
答:strlen是STRing LENgth(字符串长度)的缩写。它是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括'\0'在内)。例如:char str[10]={"china"};printf("%d",strlen(str));输出的结果不是10,也不是6,而是5。也可直接测试字符串常量的长度,例如 strlen("china");...

C语言中strlen(s)是什么意思?S是一个数组!
答:strlen(s)表示求字符串s的长度。strlen函数原型:int strlen(char *s);头文件:string.h 格式:strlen (字符数组名)功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内 说明:返回s的长度,不包括结束符NULL。参考代码:include<string.h>#include<stdio.h>int main(){ char s...

C语言中strlen()函数的意思?
答:strlen()是读取字符串长度的意思,举例如下 char a[]={'a','b','c'};return strlen(a);返回字符串a的长度,是3。需要注意的是,strlen()函数需要<string.h>的头文件。如有疑问请您追问。

strlen()函数是什么意思?
答:strlen(char *)作用:检测字符串实际长度。如:char s[]="1234567";int a=strlen(s);//a=7 实际上strlen(char *)检测的是'\0',strlen(char *)碰到'\0'就返回'\0'以前的字符数。又如:char f[]="123456\01111";int b=strlen(f);//b=6,因为遇到了'\0'...

在C语言中p=s strlen(s)是什么意思?
答:strlen是获取字符串长度的函数。所以可见变量s是字符串名,或者指向字符串的指针。所以p=s,p肯定是指针,这句代码是把字符串s的首地址赋值给指针p,或者说是让p指向字符串s。

c语言中 出现过str strl 有什么区别? 都是strlen这个词的意思?
答:str和strl是变量,意思就是象 int a;中的“a” 的作用,本身既不是函数也不是关键字,没有特别意义。而strlen是测试字符串长度的函数。

if(strlen(c) 在c语言上什么意思
答:strlen是求字符串长度的函数:if(strlen(c))的意思是:如果字符串c长度不为0就执行if所包含的语句!

C语言编程题在屏幕上输入一个字符串和一个要插入的字符
答:直接看代码:include<stdio.h>#include<string.h>void main(){char str[100],str_new[100],t;char *p=str;int at=0;puts("输入字符串:");gets(str);puts("要插入的字符:");t=getchar();/*.输入的字符被存放在键盘缓冲区中.直到按回车为止(回车字符也放在缓冲区中);其他字符会保留在...

C语言问题
答:最后结果是7 str是二维数组,在内存中是 Hello\0\0\0...\0 (总长度为20)Beijing\0 此后18行,均为20个\0,由于线性存储,所以,p+20指向的是第21个字符,即Beijing的B,strlen是到此后一个\0的长度,所以是7