Умберто Эко

С++: Нужна функция выводящая двухмерный массив в файл не затирая его, а дополняя через 1 строку.

Когда мы работаем с двухмерными массивами в C++, иногда возникает необходимость вывести эти массивы в файл, чтобы сохранить данные для последующего использования или анализа. Часто возникает вопрос: как записать массив в файл без его затирания и дополнить данные через 1 строку?

Для решения этой задачи мы можем использовать функцию в C++, которая открывает файл на запись и записывает данные в файл, не затирая его, а дополняя через 1 строку.

Вот небольшой пример функции, которая реализует эту логику:

#include <iostream>
#include <fstream>

void appendArrayToFile(int** arr, int rows, int cols, const std::string& filename) {
    std::ofstream outputFile(filename, std::ios::app);
    if (!outputFile.is_open()) {
        std::cout << "Error opening file!" << std::endl;
        return;
    }

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            outputFile << arr[i][j] << " ";
        }
        outputFile << std::endl; // Перевод строки после каждой строки массива
    }

    outputFile.close();
}

int main() {
    const int rows = 3;
    const int cols = 3;
    int** arr = new int*[rows];
    for (int i = 0; i < rows; i++) {
        arr[i] = new int[cols];
        for (int j = 0; j < cols; j++) {
            arr[i][j] = i + j; // заполнение массива данными
        }
    }

    appendArrayToFile(arr, rows, cols, "output.txt");

    // Освобождение памяти, выделенной под двухмерный массив
    for (int i = 0; i < rows; i++) {
        delete[] arr[i];
    }
    delete[] arr;

    return 0;
}

В данном примере функция appendArrayToFile открывает файл "output.txt" в режиме добавления (std::ios::app), то есть, если файл уже существует, данные будут добавлены в конец файла без его затирания. Если файл не существует, то он будет создан.

Затем функция проходится по каждому элементу массива и записывает его в файл с разделителями. После каждой строки массива добавляется переход на новую строку с помощью outputFile << std::endl;.

В главной функции main создается двухмерный массив и заполняется данными. Затем вызывается функция appendArrayToFile, которая записывает массив в файл "output.txt". После завершения работы, память, выделенная под массив, освобождается.

Теперь вы можете использовать эту функцию, чтобы сохранить двухмерный массив в файл без его затирания и дополнить данные через 1 строку.