Removing Element From Array While Keeping Order
You need to compact the vector: First search for the first non-zero element and then move all non-zero elements. It could look something like below:

void setup()
{
  Serial.begin(57600);
  while (!Serial);

  char vec[] = { 2, 5, 3, 0, 0, 1 };
  print(vec, sizeof(vec));

  compact(vec, sizeof(vec));
  print(vec, sizeof(vec));

  vec[1] = 0;
  print(vec, sizeof(vec));

  compact(vec, sizeof(vec));
  print(vec, sizeof(vec));
}

void loop()
{
}

void compact(char* vec, size_t len)
{
  int i = 0;
  for (; i &lt; len &amp;&amp; vec[i] != 0; i++);
  if (i == len) return;
  int j = i;
  for (; i &lt; len; i++) {
    char c = vec[i];
    if (c != 0) {
      vec[j++] = c;
      vec[i] = 0;
    }
  }
}

void print(char* vec, size_t len)
{
  for (int i = 0; i &lt; len; i++) {
    unsigned c = vec[i];
    if (c &lt; 16) Serial.print(0);
    Serial.print(c, HEX);
    if (i + 1 &lt; len) Serial.print('-');
  }
  Serial.println();
}


This give the following output:

02-05-03-00-00-01
02-05-03-01-00-00
02-00-03-01-00-00
02-03-01-00-00-00


Cheers!