在c語言中strlen是什麼意思

時間 2021-08-11 17:23:53

1樓:

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).

2樓:墨汁諾

strlen是求字串的長度,但不包括字串的null結束符。

strlen為c語言庫函式,包含於string.h中,作用為計算一個字串(字元陣列)中元素的個數,即從陣列頭部計數,直到遇到字串結束符\0為止,計數結果不包括\0。

需要注意的是,strlen並不是絕對安全的,如果在傳入的字元陣列的合法範圍,不存在結束符\0,那麼strlen函式會一直訪問下去,超出陣列範圍,即出現越界訪問。所以使用strlen時,程式設計師必須確認引數字元陣列中包含\0值,否則會出現不可預知後果。

3樓:匿名使用者

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)

我們能常在用到 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

4樓:℉ッ灬紫楓林

strlen是求字串實際長度的意思,例如char *str=「hello world」。則strlen[str]的返回值是11.sizeof是用來求一個變數所佔的記憶體的。

5樓:無憂網事

strlen():返回一個串有多少個字元

sizeof():返回某型別佔幾個位元組。如:int a;則sizeof(a)返回值為2。如果有定義float x;則sizeof(x)返回值為4.

6樓:匿名使用者

strlen是庫函式,計算字串長度。

sizeof是操作符,計算變數長度。

7樓:匿名使用者

int strlen(char *)

返回實參字串的長度,不包括"\0".

c語言中strlen(s)是什麼意思?s是一個陣列!

8樓:匿名使用者

strlen(s)表示求字串s的長度。

strlen函式原型:int strlen(char *s);

標頭檔案:string.h

格式:strlen (字元陣列名)

功能:計算給定字串的(unsigned int型)長度,不包括'\0'在內

說明:返回s的長度,不包括結束符null。

參考**:

#include

#include

int main()

/*執行結果:

goldenglobalview has 16 chars*/

9樓:匿名使用者

strlen是c語言標準庫提供的一個函式,給你提供strlen的一個版本,你就明白其中的s是什麼意思了。

size_t strlen(const char *s)

10樓:23歲的九局下半

strlen(s):通常用來計算字串s的長度如:char s[256];

memset(s,'\0',sizeof(s));

strcpy(s,"12345678");

那麼strlen(s)的結果為:8

11樓:阿嚦噶禱

求這個字元數字的長度,是標準庫函式,可以去查一下c標準庫給出的函式介面

12樓:匿名使用者

那s一定是個char的陣列。具體來說,s是一個陣列的首地址。

strlen(char*)的形參只能是指標。

13樓:月夜黑鷹

s真正佔用的記憶體打下,不是陣列

14樓:_小_凡

strlen()

為計算字串長度

s 是字串

15樓:大野瘦子

strlen(s)表示求字串s的長度。

strlen(s):通常用來計算字串s的長度如:char s[256];

memset(s,'\0',sizeof(s));

strcpy(s,"12345678");

那麼strlen(s)的結果為:8

c語言strlen()函式用法

標頭檔案:#include

strlen()函式用來計算字串的長度,其原型為:unsigned int strlen (char *s);  s為指定的字串

eg:#include

#include

int main()

執行結果:

strlen(str1)=38, sizeof(str1)=4strlen(str1)=45, sizeof(str1)=100strlen(str1)=53, sizeof(str1)=5

c語言中的strlen函式,C語言中的strlen函式

冰 vs 霰 strlen是測量字串長度的 char d 和char a china char b 是等價的 是陣列的表示形式 而char c 卻是字元陣列所以並不能得到結果 strlen函式測量字串中字元個數,不包括結尾的 0 字元,你的 char c沒有結尾的 0 不是合法的字串,所以結果不對 ...

C語言中,a p 什麼意思,c語言中 p a是什麼意思?

幸福de小陽 你好,可以這麼理解 p 是一個指標變數,他所指向的變數的型別與 a 的型別一致。p 指標指向的變數值是多少,那麼 a 就等於該值。之後 p 指標指向的那個變數值自加 1.注意 變數 這種格式的表示式值是變數值本身,賦值之後變數值才自加 1. 與 都是同級單目運算,所以他們的運算順序由結...

在c語言中起什麼作用,C語言中的 是個什麼意思啊 有什麼用啊

模數運算子 計算第二個運算元除第一個運算元後的餘數。所有數值型別都具有預定義的模數運算子。希望對你有幫助 求餘數用的 比如10 3 結果為1 10 2 結果為0 我來總結的說一下吧 1.用來整數求餘 如4 3 1 2.放在特定小寫字母前用來控制輸入或輸出格式常用的有 d 整形 f 實數 c 字元 s...