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語言中函式指標用法,C語言中函式指標用法
函式在記憶體中有一個物理位置,而這個位置是可以賦給一個指標的。一零點函式的地址就是該函式的入口點。因此,函式指標可被用來呼叫一個函式。函式的地址是用不帶任何括號或引數的函式名來得到的。這很類似於陣列地址的得到方法,即,在只有陣列名而無下標是就得到陣列地址。怎樣說明一個函式指標變數呢 為了說明一個變數...
c語言中的sleep函式,C語言中的sleep 函式
小落影 使用要帶上標頭檔案 include sleep函式 功 能 執行掛起一段時間 用 法 unsigned sleep unsigned seconds 注意 1.在vc中使用帶上標頭檔案 include 在linux下,gcc編譯器中,使用的標頭檔案因gcc版本的不同而不同 include 2...
在c語言中strlen是什麼意思
strlen所作的是一個計數器的工作,它從記憶體的某個位置 可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體區域 開始掃描,直到碰到第一個字串結束符 0 為止,然後返回計數器值 長度不包含 0 函式原型 extern unsigned int strlen char s 在visual c 6...