Remove Zeros
void removeZeros(uint8_t array[], size_t length) {
// Sanity check.
if(array != nullptr && length > 0) {
for(size_t i = 0; i < length; i++) {
if(array[i] == 0) {
for(size_t j = i;i + 1; j < length; j++){
if(array[j] != 0) {
array[i] = array[j];
array[j] = 0;
break;
}
}
}
}
}
}
Usage:
uint8_t keyBuffer[] = { 2, 0, 3, 0, 4, 0 };
removeZeros(keyBuffer, sizeof(keyBuffer)/sizeof(keyBuffer[0]);
New value of keyBuffer: { 2, 3, 4, 0, 0, 0 }
**Remove a single indexed value**
void removeIndex(uint8_t array[], size_t length, size_t index){
// Sanity check.
if(array != nullptr && length > 0) {
for(size_t i = index; i < (length - 1); i++){
array[i] = array[i + 1];
}
array[length-1] = 0;
}
}
Usage:
uint8_t keyBuffer[] = { 2, 5, 3, 0, 0, 0 };
removeZeros(keyBuffer, sizeof(keyBuffer)/sizeof(keyBuffer[0], 1);
New value of keyBuffer: { 2, 3, 0, 0, 0, 0 }