C检查2D-Int阵列是否已满

时间:2013-11-20 16:01:31

标签: c arrays microcontroller

我想要在我的2维数组中填充时检查它。 但它不起作用,因为我不知道如何知道哪一个是完整的value_array [x] [当它已满时]。

我可以做静态短的array_status1 = 0; static short array_status2 = 0; static short array_status3 = 0; static short array_status4 = 0;当我使用其中一个dms = 1,2,3,4时增加它。但还有另一种方式吗?

由于if(array_status> array_length),我的程序无法正常工作。如果我的函数不只是为一个dms调用,它会将值写入10次,例如5个值dms = 1和5个值dms = 2

我在微控制器中用C编程。

#define array_length 10

static int value_array[4][array_length];

static short array_status =0;


int average_value(int value,short dms)
{
    int average,i =0;

    if(array_status > array_length)
    { 
        //average_value
    array_status=0;  
        for(i =0 ; i < array_length ; i++)
     {
        average += value_array[dms][i];
     }
     average = average / array_length;  
  }
    else 
        average =0;

    value_array[dms][array_status] = value;
    array_status++;

    return average;
}

1 个答案:

答案 0 :(得分:0)

您可以将索引存储在数组中。

#define array_length 10
#define array_dim    4

static int value_array[array_dim][array_length];

static short array_status[array_dim] = {0};

int average_value(int value, short dms)
{
    int average, i = 0;

    if(array_status[dms] > array_length)
    {
        //average_value
        array_status[dms] = 0;  
        for(i = 0 ; i < array_length ; i++)
        {
            average += value_array[dms][i];
        }
        average = average / array_length;  
    }
    else 
        average = 0;

    value_array[dms][array_status[dms]] = value;
    array_status[dms]++;

    return average;
}