在C中逐步填充数组的最佳方法是什么?

glS*_*glS 1 c arrays

假设我有一个数组,定义为

int arr[10];
Run Code Online (Sandbox Code Playgroud)

我希望逐步填充这个数组(假设不会耗尽为数组分配的内存),根据表单的循环

for(int i = 0; i < some_number; i++)
  if(some_condition)
    add_element_to_arr
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?我能想到的两种方法是:1)使用辅助变量来记住存储的值的数量,或2)使用指针来做同样的事情.

这样做的首选/标准/传统方式是什么?

此外,必须为多个数组执行此类操作,要记住已向每个数组添加了多少值,必须为每个数组使用辅助变量.处理这个问题的首选方法是什么?

Dan*_*_ds 5

你可以使用这样的pos变量:

for(int i = 0, pos = 0; i < some_number && pos < 10; i++)
  if(some_condition)
    arr[pos++] = i;
Run Code Online (Sandbox Code Playgroud)

在这种情况下无需使用指针.

更新:

使用多个数组(不同大小),您可以创建一个带有指向数组的指针和当前位置的结构,这样两个值始终保持在一起:

struct arr_data {
    int *arr;
    int current_pos;
}
Run Code Online (Sandbox Code Playgroud)

也可以添加一个尺寸:

struct arr_data {
    int *arr;
    int size;         // or unsigned int or size_t
    int current_pos;  // or unsigned int or size_t
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以根据实现创建这些结构的数组.