程式中for i 0 istrlen a i的strlen(a)是什麼意思

2021-04-18 14:40:28 字數 5899 閱讀 8767

1樓:亞吉那

你想知道它是什麼,很簡單的,用printf(strlen(a))把它的值輸出來,對比看看,就知道它是什麼了。

還有,不瞭解的函式,可以上msdn查詢,英文不會的話,可以通過查翻譯比對著看。

for(int i=0;i

2樓:或者是

你好的!

strlen(a) 這個是函式,取字串a 的長度假如長度是10,那麼等於for(int i=0;i<10;i++)

迴圈10次!望採納!

for(i=0,j=strlen(str);i

3樓:自我程式設計

for(i=0,j=strlen(str);i次迴圈1、先賦值i=0;j=strlen(str);//strlen獲取字串長度,第一個字元到結束符『\0'的字內符個數

2、再判斷容i

4、最後i++,j-- 再跳第2步

至於整個程式的意思,就是 第1個字元和最後1個字元對調位置第2個字元和倒數第2個對調。。。。。。。依次類推

c語言中strlen()怎麼用

4樓:風若遠去何人留

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

其宣告為:

unsigned int strlen(char *s);

比如定義字串:

char *p = "this is for testing";

呼叫strlen(p);

返回的結果就是p中元素的個數,即19。

需要注意的是,strlen並不是絕對安全的,如果在傳入的字元陣列的合法範圍內,不存在結束符\0,那麼strlen函式會一直訪問下去,超出陣列範圍,即出現越界訪問。

所以使用strlen時,程式設計師必須確認引數字元陣列中包含\0值,否則會出現不可預知後果。

5樓:匿名使用者

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

6樓:個人資訊保密

strlen所作的僅僅是一個計數器的工作,它從記憶體的某個位置(可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體區域)開始掃描,直到碰到第一個字串結束符'\0'為止,然後返回計數器值。

原型:extern unsigned int strlen(char *s);,在visual c++ 6.0中,原型為size_t strlen( const char *string );,其中size_t實際上是unsigned int,在vc6.

0中可以看到這樣的**:typedef unsigned int size_t;。

標頭檔案:string.h

格式:strlen (字元陣列名)

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

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

因為字串是以字元'\0'結尾的,但是這個'\0'在我們的字串是隱藏的,我們看不到。實際上是有的.例如:

char a[4]="abc";//這裡陣列的元素個數至少應該是4,否則此字串不叫字串了,只能叫字元陣列了。

strlen判斷一個字串的結束就是以其末尾的'\0'為界限。其實現**可以模擬為以下:

int strlen(char *p)

所以他是不包括'\0'這個字元的。

7樓:天雲一號

strlen()函式的作用是統計給定字串的長度。

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

功       能:統計字串str中字元的個數,不包括'\0'

返  回  值:返回字元個數

舉例:char *str1 = "abcdef";   // 定義一個字元指標

char str2 = "abcdef";  // 定義一個字元陣列

int len = strlen(str1);  // 統計str1字元的個數,結果為6

int len = strlen(str2);  // 統計str2字元的個數,結果為6

8樓:匿名使用者

這個問題問的好。strlen是以\0作為標誌結束的。s\n\016\0。-.-\016...\016是一個轉義後的字元 016是8進位制數

9樓:冰_vs_霰

strlen是測量字串長度的

char d=和char a="china"; char b=; 是等價的 是陣列的表示形式

而char c=;卻是字元陣列所以並不能得到結果

10樓:匿名使用者

strlen函式測量字串中字元個數,不包括結尾的'\0'字元,你的 char c沒有結尾的『\0』不是合法的字串,所以結果不對

11樓:滕秋昀

簡單的跟你說strlen是算長度的,比如,你定義int a[10];

如果運算sizeof(a),會返回40.因為一個int型別佔了4個位元組的記憶體空間,10個就佔了40位元組

如果運算strlen(a),返回不一定是40,這要看你在a陣列裡面用了多少空間,如果用了4個位元組,就返回4,如果用滿就是返回40了

12樓:

__cdecl strlen(const char *);

計算字串的實際長度(不含字串結束標誌『\0』),並將計算結果作為函式值返回。

13樓:匿名使用者

strlen是字串長度統計函式,他不包含字串結束符「\0」;

求字元陣列長度可以用 sizeof()如你上面的問題可以用:

sizeof(c)/sizeof(c[0])

14樓:文霞yi莉

他是一個統計字串長度的函式,給你舉個例子:希望能幫到您!

#include

#include

void f(char a);

int main()

void f(char a)

printf("\n");}

15樓:手機使用者

尾的'\0'。

strlen的工作原理是不斷向後看,直到一個'\0'字元。

因此第一個程式的執行結果是不可**的,取決於之前記憶體裡的殘留資料。

而第二個程式,陣列的剩餘項均被賦成0

16樓:匿名使用者

如下,已通過編譯驗證:

#include

#include

char a[50];

int i,l;

int main()

}l=strlen(a);

printf("\n");

for(i=l-1;i>=0;i--)

printf("%c",a[i]);

return 0;}

17樓:匿名使用者

strlen()只是統計字串的長度,統計到'\0'結束,但不包括'\0',這個與sizeof()不一樣。

對於用雙引號引起來的字串,系統預設最後一位字元為'\0',如你自己定義的:

char a="china";

char b=;

另外,陣列初始化還可以是一個字元一個字元賦值,如:

char c=;

char d=;

但系統不會自動給你在最末位新增'\0』

所以在統計char c=時,統計到a時,系統還沒找到\0,所以會繼續統計,直到找到'\0'為止。所以就有你第三個值為11的情況,這個根據不同的執行環境而定。

18樓:匿名使用者

strlen是求字串長度的函式。

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

引數:s是char型別的指標,指向要求長度的字串返回值:返回字串的長度,返回型別是無符號整型注意:

strlen所作的僅僅是一個計數器的工作,它從記憶體的某個位置(可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體區域)開始掃描,直到碰到第一個字串結束符'\0'為止,然後返回計數器值(長度不包含「\0」)。

例項:#include

#include

int main(void)

pshce是什麼意思的縮寫,uf0是什麼意思的縮寫

個人 社會 健康 公民和經濟教育,personal,social,health,citizenship and economic education 1 personal個人 個人,或者稱個體,一般指一個人或是一個群體中的特定的主體。2 social社會 社會,即是由人與人形成的關係總和。人類的生產...

c中的0是什麼意思,C 中 0 表示什麼意思

作為接收引數,後面緊跟著的是a1作為傳入值。10 於int a1 a 而int a 10 所以a1 10。裡面的值好比一個索引,而,號後頁的值好比一下陣列,所以在 裡面的0就表示取值的索引是陣列的0位置.0 是後面第一個變數的位置代替。你用什麼除錯的 我用vs c 結果 a原來的值a1 10 a後來...

m0rning中文是什麼意,And的中文是什麼?

應該是morning吧,意思是上午 morning 早上,早晨 and的中文是什麼?and 英 nd 美 nd,n,nd conj.而且 和,與 於是,然後 因此 when he returned,she and simon had already gone.他回來時,她和西蒙已經走了。andcon...