В приведенном фрагменте кода нет синтаксических ошибок, если используется C99 (VS не поддерживает). На каждой итерации создается массив структур, длина которого равна i.
Наверное, вы хотели сделать так:
struct character characters[alphabetSize];
Стандартом С89 массивы переменной длины не поддерживаются. Поэтому для VS этот же код выглядит так:
struct character *characters = malloc(sizeof(struct character) * alphabetSize);
И не забудьте освободить выделенную память, когда массив станет не нужен:
free(characters);