Dlatego, że warunkiem pętli jest !odczyt.eof(), a ten będzie false dopiero, gdy nastąpi próba odczytu za plikiem, czyli przy próbie odczytu z pliku dziesiątej tablicy.
std::istream& readArray(std::istream& is, char tab[8][8])
{
for(int i = 0; i < 8 && is; i++) {
for(int j = 0; j < 8 && is >> tab[i][j]; j++) { }
}
return is;
}
...
while (readArray(odczyt, linia)) {
for(int i = 0; i < 8; i++) {
for(int j = 0; j < 8; j++) {
std::cout << linia[i][j] << ' ';
}
std::cout << '\n';
}
std::cout << '\n';
}