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

時間 2021-09-02 07:17:47

1樓:冰_vs_霰

strlen是測量字串長度的

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

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

2樓:匿名使用者

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

3樓:匿名使用者

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

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

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

4樓:幫479題

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

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

char a="china";

char b=;

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

char c=;

char d=;

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

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

5樓:匿名使用者

strlen是求字串長度的函式。

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

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

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

例項:#include

#include

int main(void)

c語言strlen函式問題

6樓:勿忘心安

strlen實際上是,從參數列示的地址往後找,找到第一個'\0',即串尾。然後計算'\0'至首地址的“距離”,即隔了幾個字元,從而得出長度。

char x=;中,實際上是定義了一個char型的陣列,而由於x[0],即0xbc開始往後找,一直到0xca,都沒'\0',所以會繼續往後。當然,實際上往後找到的是其他值。

改char x=;後,應該就是3了。

擴充套件資料:

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'在內

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

7樓:匿名使用者

sizeof(x)應該是3

strlen(x)就不一定,因為strlen()計算陣列元素個數直到遇到'\0'。顯然在索引前3個元素時並沒有遇到'\0',因此編譯器會繼續越界索引。

8樓:匿名使用者

strlen是遇到 '\0' 算有多少個位元組的,顯然,x根本沒有一個值是0,因此strlen是任意的,要想得到3,應該用sizeof

9樓:匿名使用者

我的fedora輸出是6,你的問題有問題。

應該這樣。

#include

#include

void main()

;int len=strlen(x);

printf("%d\r\n",len);

}這樣才是3.哪有string不帶0x0的。

10樓:吳國梅

這個程式本身是有問題的,可以放到c++軟體中去執行一下。0x代表十六進位制,可能不算,那這樣就是bcddca\o.

11樓:手機使用者

0 xbc 0 xdd o xxca \r 七個啊 最後的\r別忘了

12樓:燦進

應該char x=;

c語言中strlen與sizeof有什麼區別

strlen 是返回所定義字串的長度,而sizeof是用來取得變數或型別所占用的記憶體空間大小的。 strlen 是返回字串的長度。而sizeof,卻是用來取得變數或型別所占用的記憶體大小的。這個a陣列的字串長度為4 末尾的 0是不計入字串長度的 但a是10個單位的char型,它占用的記憶體空間是1...

c語言中sizeof 和strlen 用法上有什麼區別呢

延霞月 兩者都是返回位元組數,具體講前者返回的是位元組數,而後者返回的是字元數 其次,sizeof返回的數量包括最後的結束符 0 而strlen則沒有。 sizeof是操作符,不是函式。它後面的 並不是必須的,沒有歧意時就不必寫上了。sizeof操作符計算的是系統為它後面的變數或型別名分配的空間大小...

c語言中函式指標用法,C語言中函式指標用法

函式在記憶體中有一個物理位置,而這個位置是可以賦給一個指標的。一零點函式的地址就是該函式的入口點。因此,函式指標可被用來呼叫一個函式。函式的地址是用不帶任何括號或引數的函式名來得到的。這很類似於陣列地址的得到方法,即,在只有陣列名而無下標是就得到陣列地址。怎樣說明一個函式指標變數呢 為了說明一個變數...