Написать функцию слияния двух текстовых файлов - C (СИ)
Формулировка задачи:
Написать функцию слияния двух текстовых файлов X и Y так, чтобы строки файлов перемежались, т.е. X1→Y1→ X2→Y2→
Я предполагаю, что текстовые файлы должны создаваться вручную самим пользователем, вот только как написать ту самую функцию для их построчного слияния я понятия не имею... Может кто подкинуть код?
Решение задачи: «Написать функцию слияния двух текстовых файлов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { if (argc != 3) { fprintf(stderr, "Usage: %s <TextFile1> <TextFile2>\n", argv[0]); return EXIT_FAILURE; } FILE* first = fopen(argv[1], "r"); if (first == NULL) { perror(argv[1]); return EXIT_FAILURE; } FILE* second = fopen(argv[2], "r"); if (second == NULL) { fclose(first); perror(argv[2]); return EXIT_FAILURE; } char tmpname[L_tmpnam]; FILE* result = fopen(tmpnam(tmpname), "w"); char buff[256] = {0}; while (!feof(first) || !feof(second)) { if (fgets(buff, sizeof(buff), first)) { fprintf(result, "%s", buff); } if (fgets(buff, sizeof(buff), second)) { fprintf(result, "%s", buff); } } fclose(result); fclose(second); fclose(first); printf("file: %s\n", tmpname); return EXIT_SUCCESS; }
Объяснение кода листинга программы
- Программа считывает два текстовых файла.
- Если программа получает неправильное количество аргументов, выводится сообщение об ошибке.
- Открываются два файла для чтения.
- Если файлы не могут быть открыты, программа выводит сообщение об ошибке и завершается.
- Создается временный файл для записи результата.
- В цикле, пока есть данные для чтения из обоих файлов, они считываются и записываются в результат.
- Файлы закрываются после завершения чтения.
- Выводится имя временного файла.
- Программа завершается успешно.