помогите с задачей с++ работа с файлами

Скопировать содержимое файла indata.dat в файл outdata.dat и подсчитать и вывести на экран количество строк в файле.

вот мой код:

#include <iostream>
#include <fstream>
using namespace std;

// () для записи использует функцию put()
bool countlines(const char* readFile, const char* writeFile)
{
    int count = 0;
    ifstream rf(readFile, ios::in | ios::binary);

    // проверка, открыт ли файл
    if (!rf.is_open())
        return false;

    ofstream wf(writeFile, ios::out | ios::binary);

    // проверка, открыт ли файл
    if (!wf.is_open())
    {
        rf.close(); // закрыть ранее открытый файл rf
        return false;
    }

    char sym;

    // цикл посимвольного чтения
    while (rf)
    {
        rf.get(sym); // считать из rf => sym
        if (rf) wf.put(sym); // записать sym => wf
        
    }
    cout << count ;//кол-во строк
    rf.close(); // закрыть оба файла
    wf.close();
}
void main()
    {
        countlines("indata.dat", "outdata.dat");
    }

Ответы (1 шт):

Автор решения: Глицин
#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;

bool countline(const char* readFile, const char* writeFile)
{
    int count = 0;
    char* str = new char[1024];
    ifstream rf(readFile, ios::in);

    if (!rf.is_open())
        return false;

    ofstream wf(writeFile, ios::out);

    if (!wf.is_open())
    {
        rf.close();
        return false;
    }

    char sym;

    while (!rf.eof())
    {
        rf.get(sym);
        if (rf) wf.put(sym);
        rf.getline(str, 1024, '\n');
        count++;
    }
    cout << count;
    rf.close();
    wf.close();
}
void main()
{
    countline("indata.dat", "outdata.dat");
}
→ Ссылка