Не пулчается закончить программу

Условие - Написать программу С++. Даны два текстовых файла. Создать третий файл, в котором после каждой строки первого файла будет вписана строка из второго файла. Если один из файлов будет содержать больше строк чем второй, содержание файла с большим количеством строк будет вписано в последнюю строчку третьего файла. Нельзя дублировать содержание файлов в оперативной памяти!

Все сделано кроме пунка про оперативную память и частично кроме пунка про файлы с большим количеством строк. Буду признателен, за помощь!

Код:

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

int main()
{
    FILE *f1 = fopen("F1.txt", "r"); 
    FILE *f2 = fopen("F2.txt", "r"); 
    FILE *f3 = fopen("F3.txt", "w"); 

if (!f1 || !f2 ) 
{
    cout << " Ошибка! Нету файлов для обработки! " << endl;
return 1;
}
cout<< "Содержание первого файла: " << endl;
cout << endl;
cout << ifstream("F1.txt").rdbuf();
cout << endl;
cout << endl;
cout << "Содержание второго файла: " <<endl;
cout << endl;
cout << ifstream("F2.txt").rdbuf();
cout << endl;

char buf[510];

while (!feof(f1) && !feof(f2))
{
    fgets(buf, 255, f1); 

    int len = strlen(buf);
    fgets(buf+len, 510-len, f2);

    fputs(buf, f3);
} 

    fclose(f2);

while (!feof(f1)) 
{
    fgets(buf, 255, f1);
    cout<<endl;
    fputs(buf, f3);
}
    fclose(f1);
    fclose(f3);
    cout << endl;
    cout << " Содержание третьего файла :" << endl;
    cout << endl;
    cout << ifstream("F3.txt").rdbuf();
    cout << endl;

    return 0;
}

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