我试图获得我阵列的大小,但我没有运气...... 我从各种其他线程中读到了获取数组大小的方法是: 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个元素用完)
答案 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]);
}