Zapis i odczyt z pliku

Witam. Mam problem z programem zapisującym i odczytującym dane z pliku.

Pierwszy problem to zapis danych porcjami z tabelki do pliku. Nie wiem jak skonstruować pętlę żeby dane były zapisywane po 16 znaków do pliku.

AnsiString blok;

unsigned char tablica_stanu[4][4];

ofstream plik_wyjsciowy;


plik_wyjsciowy.open("test.txt", ios::app);

for(int k=1; k<=blok.Length(); k++) //Wpisywanie danych do tablicy

{

 tablica_stanu[i][j]=blok[k];

 j++;

 if(j==4)

 {

  i++;

  j=0;

 }

}



for(int i=0; i<4; i++)

{

 for(int j=0; j<4; j++)

 {

  plik_wyjsciowy << tablica_stanu[i][j];

 }

}


plik_wyjsciowy.close();

Drugi problem to jest odczyt danych. Na ekranie wypisuje 16 pierwszych znaków z pliku a dodatkowo kolejne 16 znaków jakiś śmieci. Szukałem trochę po necie z znalazłem, że ma to coś wspólnego z EOF.

ifstream plik_wejsciowy;


plik_wejsciowy.open("test.txt", ios::in);


while(!plik_wejsciowy.eof())

{


for(int i=0; i<4; i++)

{

 for(int j=0; j
 {

  plik_wejsciowy >> tablica_stanu[i][j];

 }

}


for(int i=0; i<4; i++)

{

 for(int j=0; j
 {

  RichEdit1->Text=RichEdit1->Text + tablica_stanu[i][j];

 }

}


plik_wejsciowy.close();

Byłbym wdzięczny za jakieś wskazówki jak to zrobić poprawnie. Dodam że program pisze w Builder c++. Pozdrawiam.