Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Пoмогите с задачей по c++

Cкрпрлесго Скрпрлесгов Ученик (31), на голосовании 5 месяцев назад
Напишите программу, которая принимает в качестве аргументов при запуске имена n файлов. Программа должна соединить все n файлов в один.
Голосование за лучший ответ
Артем Гудков Гуру (2863) 6 месяцев назад
 #include   
#include

int main(int argc, char* argv[]) {
if (argc < 3) {
std::cerr << "Usage: " << argv[0] << " ..." << std::endl;
return 1;
}

std::ofstream outFile(argv[1], std::ios::binary);
if (!outFile) {
std::cerr << "Cannot open output file." << std::endl;
return 1;
}

for (int i = 2; i < argc; ++i) {
std::ifstream inFile(argv[i], std::ios::binary);
if (!inFile) {
std::cerr << "Cannot open input file: " << argv[i] << std::endl;
return 1;
}

outFile << inFile.rdbuf();
inFile.close();
}

outFile.close();
return 0;
}
Татьяна Просветленный (36384) 6 месяцев назад
 #include  
#include
#include

int main(int argc, char* argv[]) {
// Проверяем, что количество аргументов больше 2 (имя программы + хотя бы один файл)
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " ... " << std::endl;
return 1;
}

// Имя выходного файла
std::string outputFilename = "output.txt";
std::ofstream outputFile(outputFilename, std::ios::out | std::ios::binary);

if (!outputFile) {
std::cerr << "Error creating output file: " << outputFilename << std::endl;
return 1;
}

// Проходим по всем файлам, переданным в аргументах
for (int i = 1; i < argc; ++i) {
std::ifstream inputFile(argv[i], std::ios::in | std::ios::binary);
if (!inputFile) {
std::cerr << "Error opening input file: " << argv[i] << std::endl;
continue;
}

// Копируем содержимое файла
outputFile << inputFile.rdbuf();

inputFile.close();
}

outputFile.close();
std::cout << "All files have been merged into " << outputFilename << std::endl;

return 0;
}
Объяснение:
Проверка количества аргументов: Программа проверяет, что количество аргументов больше двух (имя программы и хотя бы один файл).
Создание выходного файла: Программа создает выходной файл output.txt для записи. Вы можете изменить имя выходного файла, если хотите.
Чтение и запись файлов: Для каждого входного файла программа открывает его и записывает его содержимое в выходной файл.
Закрытие файлов: Все файлы закрываются после их использования.
GGG Просветленный (36166) 6 месяцев назад
 #include  
#include
#include
#include

using namespace std;

int main(int argc, char* argv[]) {
// Проверяем, были ли переданы имена файлов
if (argc < 3) {
cerr << "Использование: " << argv[0] << " <имя_выходного_файла> <имя_файла_1> [<имя_файла_2> ...]" << endl;
return 1;
}

// Имя выходного файла
string output_filename = argv[1];

// Открываем выходной файл для записи
ofstream output_file(output_filename);
if (!output_file.is_open()) {
cerr << "Ошибка открытия файла: " << output_filename << endl;
return 1;
}

// Проходим по всем входным файлам
for (int i = 2; i < argc; ++i) {
// Имя входного файла
string input_filename = argv[i];

// Открываем входной файл для чтения
ifstream input_file(input_filename);
if (!input_file.is_open()) {
cerr << "Ошибка открытия файла: " << input_filename << endl;
continue; // Пропускаем файл, если его не удалось открыть
}

// Копируем содержимое входного файла в выходной
output_file << input_file.rdbuf();

// Закрываем входной файл
input_file.close();
}

// Закрываем выходной файл
output_file.close();

cout << "Файлы успешно объединены в " << output_filename << endl;

return 0;
}
Похожие вопросы