Запись В Файл , С++

Тема в разделе "C/C++/C#", создана пользователем slashkinks, 6 дек 2012.

Статус темы:
Закрыта.
  1. slashkinks

    slashkinks Гость

    открыть 1-й файл и 2-й для чтения , 3-й для дозаписи. В третий записать поочередно символы из первого и второго файлов. Если в 1-м файле кончаются символы, запись из 2-го продалжается и наоборот.

    помогите пожалуйста с программой , нужно в общем сам участок кода где поочередно записываются символы из файлов

    мой код (примитивный, но какой есть) если есть ошибки в нем подскажите где.

    Код (C++):
    #include <iostream>
    #include <stdio.h>

    using namespace std;

    void main ()
    {
    setlocale(LC_ALL, "Russian");

    char text[100];
    char text2[100];
    size_t readed;
    size_t readed2;

    const char* file ="a:\\Лабораторная работа №6\\file.txt";
    const char* file2 ="a:\\Лабораторная работа №6\\file2.txt";
    const char* file3 ="a:\\Лабораторная работа №6\\file3.txt";
    FILE *fl1,*fl2,*fl3;

    //Открытие файлов 1,2,3
    if ((fl1 = fopen(file, "r")) == NULL)
    {
    cerr << "ошибка при открытии файла: "<<file<<"\n";
    exit(1);
    }
    if ((fl2 = fopen(file2, "r")) == NULL)
    {
    cerr << "ошибка при открытии файла: "<<file2<<"\n";
    exit(1);
    }
    if ((fl3 = fopen(file3, "a")) == NULL)
    {
    cerr << "ошибка при открытии файла: "<<file3<<"\n";
    exit(1);
    }

    //Чтение файлов 1 и 2
    readed = fread(text, sizeof(char), 100, fl1);
    if (readed != 100 && ferror(fl1))
    {
    cerr << "ошибка чтения файла: "<<file<<"\n";
    exit(1);
    }
    readed2 = fread(text2, sizeof(char), 100, fl2);
    if (readed != 100 && ferror(fl2))
    {
    cerr << "ошибка чтения файла: "<<file2<<"\n";
    exit(1);
    }

    //поочередная запись в третий файл, из 1-го и 2-го файлов
    //Если в первом файле кончаются символы запись из 2 продалжается и наоборот

    for (int i = 0; i < readed; i++ )
    {
    for(int j=0; j<readed2; j++)
    {

    //?????????????????????????????????????
    }

    }

    fclose(fl1);
    fclose(fl2);
    fclose(fl3);

    system("Pause");

    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    if ((fl1 = fopen(file, "r")) == NULL)
    {
    cerr << "ошибка при открытии файла: "<<file<<"\n";
    exit(1);
    }
    if ((fl2 = fopen(file2, "r")) == NULL)
    {
    cerr << "ошибка при открытии файла: "<<file2<<"\n";
    exit(1);
    }
    Если второй файл не удалось открыть - то первый уже по-любому открыт. перед вызовом exit файл стоит закрыть :)

    Код (Text):
    or (int i = 0; i < readed; i++ )
    {
    for(int j=0; j<readed2; j++)
    {

    //?????????????????????????????????????
    }

    }
    тут ты что-то не то делаешь.. и вообще ИМХо зря ты считал в строки содержимое файлов

    Добавлено:
    Код (Text):
    std::ifstream ifst1, ifst2;
    std::ofstream ofst;

    /* ifst.open(); ofst.open() ...*/

    bool fl = false;
    while (0 == ifst1.eof() || 0 == ifst2.eof()) {
    if (ifst1.eof() || true == fl) {
    ofst << ifst2.get();
    fl = false;
    }
    else if (ifst2.eof() || false ==fl) {
    ofst << ifst1.get();
    fl = true;
    }
    }
    не проверял, но суть, я думаю, понятна
     
  3. slashkinks

    slashkinks Гость

    да спасибо!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей