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