W C++ rozmiar tablicy automatycznej musi być stałą o wartości znanej już podczas kompilacji, u Ciebie jest to zmienna i.
Nawet jeżeli kompilator ma niestandardowe rozszerzenie i akceptuje zmienną jako rozmiar tablicy, to tablica o rozmiarze i nie ma elementu o indeksie i, a ty próbujesz się do niego odwołać. W szczególności, gdy tablica ma rozmiar zero, to w ogóle nie ma elementów. Po co Ci w ogóle ta tablica???
Wreszcie, używasz fstream zamiast ofstream, czyżbyś miał zamiar robić odczyt i zapis jednocześnie?