Как объединить 2 файла в один (третий) на чистом Си? - C (СИ)
Формулировка задачи:
Доброго времени суток. Проблема в следующем. Как записать содержимое файла (txt) в динамический массив строк? Или же есть другой способ перенести всё содержимое файла? К сожалению, ничего из с++ использовать нельзя.
Решение задачи: «Как объединить 2 файла в один (третий) на чистом Си?»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> int main(void) { FILE *origin = NULL; FILE *second_origin = NULL; FILE *output = NULL; char current_symbol; if (!(origin = fopen("input1.txt", "r"))) { printf("Here is the error while opening the first file!"); exit(1); } if (!(second_origin = fopen("input2.txt","r"))) { printf("Here is the error while opening the second file!"); exit(2); } if (!(output = fopen("output.txt","w"))) { printf("Here is the error while opening the output file!"); exit(3); } while (!feof(origin)) { current_symbol = fgetc(origin); if (current_symbol == EOF) break; fprintf(output, "%c", current_symbol); } fprintf(output, "\n"); while (!feof(second_origin)) { current_symbol = fgetc(second_origin); if (current_symbol == EOF) break; fprintf(output, "%c", current_symbol); } fclose(origin); fclose(output); fclose(second_origin); }
Объяснение кода листинга программы
- #define _CRT_SECURE_NO_WARNINGS - это директива препроцессора, которая отключает некоторые проверки безопасности при работе с функциями стандартной библиотеки.
- #include
- включает в программу функции файла стандартного ввода/вывода, необходимые для работы с консолью. - #include
- включает в программу функции файла conio.h, которые используются для работы с консолью, такие как функция getch(), используемая для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу. - #include
- включает в программу функции файла stdlib.h, которые используются для работы с памятью и строками. - int main(void) - это функция, которая запускается при запуске программы.
- *FILE origin = NULL;* - объявляет переменную origin типа FILE, которая будет использоваться для работы с файлами. Значение NULL указывает на то, что файл не открыт.
- *FILE second_origin = NULL;* - объявляет переменную second_origin типа FILE, которая будет использоваться для работы со вторым файлом. Значение NULL указывает на то, что файл не открыт.
- *FILE output = NULL;* - объявляет переменную output типа FILE, которая будет использоваться для работы с выходным файлом. Значение NULL указывает на то, что файл не открыт.
- if (!(origin = fopen(
input1.txt
,r
))) - проверяет, открылся ли файл input1.txt для чтения. Если это не так, программа выводит сообщение об ошибке и завершается с кодом 1. - printf(
Here is the error while opening the first file!
); - выводит сообщение об ошибке открытия первого файла. - exit(1); - завершает программу с кодом 1.
- if (!(second_origin = fopen(
input2.txt
,r
))) - проверяет, открылся ли файл input2.txt для чтения. Если это не так, программа выводит сообщение об ошибке и завершается с кодом 2. - printf(
Here is the error while opening the second file!
); - выводит сообщение об ошибке открытия второго файла. - exit(2); - завершает программу с кодом 2.
- if (!(output = fopen(
output.txt
,w
))) - проверяет, открылся ли файл output.txt для записи. Если это не так, программа выводит сообщение об ошибке и завершается с кодом 3. - printf(
Here is the error while opening the output file!
); - выводит сообщение об ошибке открытия выходного файла. - exit(3); - завершает программу с кодом 3.
- while (!feof(origin)) - это цикл while, который выполняется до тех пор, пока не достигнут конец файла origin.
- current_symbol = fgetc(origin); - читает текущий символ из файла origin и сохраняет его в переменной current_symbol.
- fprintf(output,
%c
, current_symbol); - записывает текущий символ в выходной файл. - fprintf(output,
\n
); - записывает символ новой строки в выходной файл. - while (!feof(second_origin)) - это цикл while, который выполняется до тех пор, пока не достигнут конец файла second_origin.
- current_symbol = fgetc(second_origin); - читает текущий символ из файла second_origin и сохраняет его в переменной current_symbol.
- fprintf(output,
%c
, current_symbol); - записывает текущий символ в выходной файл. - fclose(origin); - закрывает файл origin.
- fclose(output); - закрывает файл output.
- fclose(second_origin); - закрывает файл second_origin.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д