Как сделать динамическое увеличение кол-ва структур?
Если у вас С++, а не чистый Си, то конечно используют std::vector. А вместо char[] используют std::string.
Если Си, то придётся выделять динамически через malloc.
Как уже советовали, проще всего использовать std::vector. Но тут важно понимать то, что при перевыделении памяти элементы вектора копируются. Поэтому если можно посмотреть в сторону std::list или хранить структуры по указателям в векторе.