Как объединить 2 файла в один (третий) на чистом Си? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Проблема в следующем. Как записать содержимое файла (txt) в динамический массив строк? Или же есть другой способ перенести всё содержимое файла? К сожалению, ничего из с++ использовать нельзя.

Решение задачи: «Как объединить 2 файла в один (третий) на чистом Си?»

textual
Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <stdlib.h>
  6.  
  7. int main(void)
  8. {
  9.     FILE *origin = NULL;
  10.     FILE *second_origin = NULL;
  11.     FILE *output = NULL;
  12.     char current_symbol;
  13.  
  14.     if (!(origin = fopen("input1.txt", "r")))
  15.        {
  16.             printf("Here is the error while opening the first file!");
  17.             exit(1);
  18.        }
  19.     if (!(second_origin = fopen("input2.txt","r")))
  20.     {
  21.         printf("Here is the error while opening the second file!");
  22.         exit(2);
  23.     }
  24.     if (!(output = fopen("output.txt","w")))
  25.     {
  26.         printf("Here is the error while opening the output file!");
  27.         exit(3);
  28.     }
  29.  
  30.  
  31.     while (!feof(origin))
  32.     {
  33.         current_symbol = fgetc(origin);
  34.         if (current_symbol == EOF)
  35.             break;
  36.         fprintf(output, "%c", current_symbol);
  37.     }
  38.    
  39.  
  40.     fprintf(output, "\n");
  41.  
  42.     while (!feof(second_origin))
  43.     {
  44.         current_symbol = fgetc(second_origin);
  45.         if (current_symbol == EOF)
  46.             break;
  47.         fprintf(output, "%c", current_symbol);
  48.     }
  49.     fclose(origin);
  50.     fclose(output);
  51.         fclose(second_origin);
  52. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы