假设我声明了一个如下数组:
int myArr = [someSize];
现在我把n个元素(其中n不完全知道,但n< someSize)就像这样
myArray[0] = 12;
myArray[1] = 23;
and so on .....
现在我想知道有没有办法找出用户输入了多少元素。
答案 0 :(得分:3)
您无法从阵列中获取任何此类信息。如果你需要它,你会想要录制它。当我需要这个时,我通常使用类似的东西:
struct myArray_t {
size_t next_element;
int arr[somesize];
};
创建此项时,将next_element
设置为0,要添加元素,请使用myArr.arr[myArr.next_element++] = whatever;
答案 1 :(得分:2)
不,如果这就是你所拥有的全部,你就无法弄明白。 C不会在内部存储写入的数组元素的数量。
答案 2 :(得分:1)
如果你知道有一些值无法放入数组中(即事先检查和禁止它),那么你可以初始化数组的每个元素,然后进行计数。例如如果数组初始化为-1
:
int count = 0;
for (i = 0; i < someSize; i++) {
if (myArr[i] != -1) count++;
}