Изменения размера динамического массива char - C (СИ)

Узнай цену своей работы

Формулировка задачи:

У меня следующее недопонимание в работе с памятью: Есть допустим массив char'ов с именем array:
char *array = (char *) malloc(10);
Содержание массива допустим: 012

345

6789 У меня есть функция для удаления символов из строки. Удаляем символы 345, остаётся: 012. . .6789 И тут такой интересный момент. Я не знаю как правильно удалить эти символы с вот какой оговоркой. Если я их удаляю, то перемещаю на место 3 4 5 цифры 6 7 8 соответственно. В результате: 012. . .6789 // Было 0126789. . . // Стало Получается что 3 chara пропали вникуда. Как вернуть эти символы системе, чтобы ядро далее могло их использовать? Ведь когда я вызывал malloc, я резервировал виртуальную память именно такого размера под 10 символов.

Решение задачи: «Изменения размера динамического массива char»

textual
Листинг программы
#include <stdlib.h>
#include <string.h>
/*...*/
memmove(array + 3, array + 6, 4);
array = realloc(array, 7);

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы и
  2. Производим некий код, который мы не видим (скрыт под ...)
  3. С помощью функции memmove() перемещаем блок памяти, начиная с 7-го элемента массива, на 4 позиции вперед (включая 0-й элемент). При этом, 3-й и 6-й элементы массива не участвуют в операции перемещения.
  4. С помощью функции realloc() изменяем размер массива array до 7 элементов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы