2013-10-06 29 views
1

我想獲得我的數組的大小,但我沒有運氣... 我已經從其他各種線程讀取的方式來獲取數組的大小是: theSize =(sizeof(array)/ sizeof(array [0]))獲取我的陣列的大小

但是,這似乎抓住了陣列的空元素。

我們如何抓住這一點被用完的元素...例如:

char array[200][40]; 

for (i = 1; i < (sizeof(array)/sizeof(array[0])); i++) { 
    printf("%s", array[i-1]); 

輸出爲使用它的200個元素將是3數組...

First 
Second 
Third 
(This is where it should stop, however it gives a bunch of question marks, 
so I assume I'm grabbing memory i'm not supposed to use. 

注:我想它,這樣我< 3環路(因爲陣列已用完3片)

+0

不要緊,你用什麼,'的sizeof()'只有約在內存中的總大小。 – Havenard

+0

哦,我明白了,有沒有其他方法可以做我需要的? – CloudN9ne

+2

你必須保持自己的尺寸可變 –

回答

0

有兩種方式做這個。

  • 第一種方法是跟蹤在一個單獨的變量中使用了多少個元素。請注意,您必須確保used始終小於等於陣列的大小。

    char array[200][40]; 
    size_t used = 3; 
    for (int i = 0; i < used; ++i) { 
        printf("%s", array[i]); 
    } 
    
  • 的第二種方法是對標誌具有特殊值的第一未使用的元件,如0,輸出所有的值,直到標記之一。在你的情況下,用空字符串標記數組的末尾是很自然的。

    char array[200][40]; 
    size_t size = sizeof(array)/sizeof(array[0]); 
    for (int i = 0; i < size && array[i][0] != 0; ++i) { 
        printf("%s", array[i]); 
    }