2 回答

TA貢獻1809條經驗 獲得超8個贊
strlen函數所作的僅僅是一個計數器的工作,它從內存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描,直到碰到第一個字符串結束符'\0'為止,然后返回計數器值(長度不包含"\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。
相關函數:
TCHAR.H routine _UNICODE & _MBCS not defined_MBCS defined_UNICODE defined_tcslen
程序舉例
舉例1:(在Visual C++6.0中運行通過)
#include <string.h>
#include<stdio.h>
int main(void)
{
char *s="Golden Global View";
printf("%s has %d chars",s,strlen(s));
getchar();
return 0;
}

TA貢獻1810條經驗 獲得超4個贊
1.xx[2][8]的內存是連續分配的
2.
01234567
0dAe,BfC.
1CCbbAA\0
本來在第一行最后應該是\0的,但是位置占滿了,所以\0就到第二行了(由于內存的連續分配)
但是繼續向第二行寫數據的時候,C就把第一行的\0覆蓋了,到最后再加上第二的\0
而strlen只認起始字符d然后開始數,直到\0為止
所以把dAe,BfC.CCbbAA都數上了,數到第二行的\0結束,所以是14個
添加回答
舉報