获得我的阵列的大小

时间:2013-10-06 02:08:01

标签: c arrays

我试图获得我阵列的大小,但我没有运气...... 我从各种其他线程中读到了获取数组大小的方法是:     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.

注意:我想要它以便我&lt;循环3(因为数组有3个元素用完)

1 个答案:

答案 0 :(得分: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]);
    }