Страницы

Поиск по вопросам

воскресенье, 21 октября 2018 г.

Как создать динамический массив?

Хочу разобраться с динамическим выделением памяти в c. Пришла в голову идея, попробовать сделать программу, которая спрашивает у пользователя имя и записывает ввод в массив типа char, но так чтобы массив сам выделял себе память. То есть без предварительного выделения вида char name[30] = {0};. Я ввожу имя Магомед и массив сам выделяет себе память на 7 символов. Как это сделать?


Ответ

Я бы взял указатель, длину и зарезервированную длину. Примерно
char * s = malloc(16); int size = 16; int used = 0;
И дальше читаем по одному символу. Как только вносим его в s, тут же увеличиваем used; как только used == size, так сразу увеличиваем массив раза в два:
s = realloc(s,size *= 2);
И все. Мы всегда знаем, сколько места имеется, сколько занято. Как в векторе в C++.

Комментариев нет:

Отправить комментарий