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