Есть несколько вариантов:
Продолжайте использовать массив фиксированного размера, но используйте значение часового поля (например, -1) для ключевого поля, чтобы вы знали, какие записи не используются. Когда вам нужно добавить запись, найдите следующий неиспользуемый слот. Это все еще страдает от ограничения наличия массива фиксированного размера.
Используйте memmove
, как указано в других ответах. Это не очень эффективно.
Используйте связанный список вместо фиксированного массива, тогда вы можете легко (и дешево) удалить записи, а также добавить.
По сути, если вы не пишете код для какой-либо встроенной системы, имеющей жесткие ограничения памяти, вероятно, нет веской причины устанавливать произвольный верхний предел массива. Другие структуры (такие как связанный список) могут быть легко добавлены или удалены, и есть множество библиотек, которые предоставляют такие контейнеры.
И после всего этого вы уверены, что вам не нужна хеш-таблица (или словарь), если вы управляете таблицей символов?