помогите с задачей с++ работа с файлами
Скопировать содержимое файла 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");
}