對于字符數(shù)組str[N],判斷方法有以下三種:
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了吉利免費建站歡迎大家使用!
第一種:用庫函數(shù)strlen
len = strlen(str); // 數(shù)組長度
第二種:利用計數(shù)器
int i=0;
while(str[i++] != '\0'); // 數(shù)組str的長度為i
第三種:利用sizeof函數(shù)
len = sizeof(str)/sizeof(str[0]); // 數(shù)組長度對于其他類型的數(shù)組,都可以用字符數(shù)組的第三種方法,第三種方法是通用的。
你的數(shù)組a[0]在賦值過程中就是0啊
即a[0]=0;
for(;jMAX;j++)
{
if(a[j]==NULL)//如果數(shù)組為空則返回當前數(shù)組的下標,即為數(shù)組元素的個數(shù)
{ //或者這樣寫a[j]=='\0'
m=j;
printf("%d\n",m);
break;
}
}
所以上面程序j=0時,a[0] == NULL是TRUE,所以打印出m為0啊
所以你可以將賦值語句改一下即可
for(i=1;i=10;i++)
{
a[i]=i;//對十個數(shù)組依次賦值
}
1、C語言中,定義數(shù)組后可以用sizeof命令獲得數(shù)組的長度(即可容納元素個數(shù))。但是通過傳遞數(shù)組名參數(shù)到子函數(shù)中,以獲得數(shù)組長度是不可行的,因為在子函數(shù)當中,數(shù)組名會退化為一個指針。
2、例如:
int?data[4],length;
length=sizeof(data)/sizeof(data[0]);??//數(shù)組占內存總空間除以單個元素占內存空間大小,即等于元素個數(shù)
printf("length?of?data[4]=%d",?length?);?//輸出length?of?data[4]=4
C語言中,定義數(shù)組后可以用sizeof命令獲得數(shù)組的長度(可容納元素個數(shù)),通過數(shù)組占內存總空間/單個元素占內存空間大小,即可得到數(shù)組的元素個數(shù)
例如
但是,通過將數(shù)組作為函數(shù)參數(shù)傳遞到函數(shù)中,以獲得數(shù)組長度是不可行的
例如
原因:數(shù)組arr是函數(shù)參數(shù),在函數(shù)中,arr只是一個指針(地址,系統(tǒng)在本函數(shù)運行時,是不知道arr所表示的地址有多大的數(shù)據(jù)存儲空間,這里只是告訴函數(shù):一個數(shù)據(jù)存儲空間首地址),所以,sizoef(arr)的結果是指針變量arr占內存的大小,一般在32位機上是4個字節(jié)。arr[0]是int類型,sizeof(arr[0])也是4個字節(jié),所以,結果永遠是1。
如果想要在被調用的函數(shù)中,得知原數(shù)組的大小,可以再給函數(shù)添加一個參數(shù),用于指定數(shù)組的大小,讓外界調用函數(shù)前就講數(shù)組的大小傳遞進來
有一個函數(shù)就是為了獲取數(shù)組元素個數(shù)的:sizeof!
原理是:sizeof獲取數(shù)組的長度然后除以數(shù)據(jù)類型所占的長度得到元素個數(shù)
我簡單寫下代碼:
int a[100]={1,2,3,4}; int len=sizeof(a)/sizeof(int); printf("%d\n",len);
以上為原來的回答,有錯誤:
在給定數(shù)組大小時候sizeof這個方法就不起作用了,我當時沒注意犯了錯誤有些誤人子弟了
原諒我一年以后才來修改這個答案~
我想了想int數(shù)組默認全是0稱為初始化,姑且說非0為有效元素
while(i100)
{
if(a[i]!=0)
count++;
i++;
}
遍歷,記錄
字符數(shù)組有結束符,只要找到結束符的位置就可以了