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