Как объединить 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);
}

Объяснение кода листинга программы

  1. #define _CRT_SECURE_NO_WARNINGS - это директива препроцессора, которая отключает некоторые проверки безопасности при работе с функциями стандартной библиотеки.
  2. #include - включает в программу функции файла стандартного ввода/вывода, необходимые для работы с консолью.
  3. #include - включает в программу функции файла conio.h, которые используются для работы с консолью, такие как функция getch(), используемая для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.
  4. #include - включает в программу функции файла stdlib.h, которые используются для работы с памятью и строками.
  5. int main(void) - это функция, которая запускается при запуске программы.
  6. *FILE origin = NULL;* - объявляет переменную origin типа FILE, которая будет использоваться для работы с файлами. Значение NULL указывает на то, что файл не открыт.
  7. *FILE second_origin = NULL;* - объявляет переменную second_origin типа FILE, которая будет использоваться для работы со вторым файлом. Значение NULL указывает на то, что файл не открыт.
  8. *FILE output = NULL;* - объявляет переменную output типа FILE, которая будет использоваться для работы с выходным файлом. Значение NULL указывает на то, что файл не открыт.
  9. if (!(origin = fopen(input1.txt, r))) - проверяет, открылся ли файл input1.txt для чтения. Если это не так, программа выводит сообщение об ошибке и завершается с кодом 1.
  10. printf(Here is the error while opening the first file!); - выводит сообщение об ошибке открытия первого файла.
  11. exit(1); - завершает программу с кодом 1.
  12. if (!(second_origin = fopen(input2.txt,r))) - проверяет, открылся ли файл input2.txt для чтения. Если это не так, программа выводит сообщение об ошибке и завершается с кодом 2.
  13. printf(Here is the error while opening the second file!); - выводит сообщение об ошибке открытия второго файла.
  14. exit(2); - завершает программу с кодом 2.
  15. if (!(output = fopen(output.txt,w))) - проверяет, открылся ли файл output.txt для записи. Если это не так, программа выводит сообщение об ошибке и завершается с кодом 3.
  16. printf(Here is the error while opening the output file!); - выводит сообщение об ошибке открытия выходного файла.
  17. exit(3); - завершает программу с кодом 3.
  18. while (!feof(origin)) - это цикл while, который выполняется до тех пор, пока не достигнут конец файла origin.
  19. current_symbol = fgetc(origin); - читает текущий символ из файла origin и сохраняет его в переменной current_symbol.
  20. fprintf(output, %c, current_symbol); - записывает текущий символ в выходной файл.
  21. fprintf(output, \n); - записывает символ новой строки в выходной файл.
  22. while (!feof(second_origin)) - это цикл while, который выполняется до тех пор, пока не достигнут конец файла second_origin.
  23. current_symbol = fgetc(second_origin); - читает текущий символ из файла second_origin и сохраняет его в переменной current_symbol.
  24. fprintf(output, %c, current_symbol); - записывает текущий символ в выходной файл.
  25. fclose(origin); - закрывает файл origin.
  26. fclose(output); - закрывает файл output.
  27. fclose(second_origin); - закрывает файл second_origin.
  28. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы