Не получается считать двумерный массив из файла
есть вот такая функция, она сначала подсчитывает количество элементов в строке, а после количество строк. Мне нужно, чтобы после она считала матрицу вида
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
из файла, и я написал цикл для этого, но мне выводит сплошные нули. Почему так?
const int N_MAX = 4;
const int M_MAX = 4;
int S[N_MAX][M_MAX];
int N = 0, M = 1;
int otr, pol;
int x = 0;
void fillArray() {
setlocale(LC_ALL, "Russian");
ifstream file("matrix.txt", ios::binary);
if (!file.is_open()) {
cout << "Ошибка открытия файла!" << endl;
return;
}
string firstLine;
getline(file, firstLine);
string elem;
for (int i = 0; i < firstLine.length(); i++) {
if (firstLine[i] != ' ') {
elem += firstLine[i];
}
else {
if (!elem.empty()) {
N++;
elem.clear();
}
}
}
if (!elem.empty()) {
N++;
}
string line;
while (getline(file, line)) {
M++;
}
if (N <= 0 || N > N_MAX || M <= 0 || M > M_MAX) {
cout << "Некорректный размер матрицы!" << endl;
file.close();
return;
}
if (file.is_open())
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
file >> S[i][j];
}
}
}
// Вывод матрицы
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cout << S[i][j] << " ";
}
cout << endl;
}
const int size = N * M;
file.close();
}
Источник: Stack Overflow на русском