• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

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

  • Автор темы slashkinks
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

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");

}
 
R

rrrFer

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

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

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

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

Добавлено:
Код:
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;
}
}
не проверял, но суть, я думаю, понятна
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!