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.

注意:我希望它使 i < 3 用于循环(因为数组有 3 个元素用完)

4

1 回答 1

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]);
    }
    
于 2013-10-06T02:19:49.100 回答