Merge contents of two files into a third file using C



In C language, file handling is used for various file actions such as to write, read, merge, etc.

Merging Contents of Two Files into a Third File

To merge the contents of two files into a third file, you need to open the first two files (whose content will be merged into the third file) in read mode and the third file in write mode. After opening the files, read the contents of the first file and write them to the third file, and similarly with the second file and appending them to the third file.

Example Scenario

Imagine these are the files:

File 1: java.txt is having initial content "Java is a programing language."
File 2: kotlin.txt is having initial content "kotlin is a programing language."
File 3: Output file (ttpoint.txt is having initial content as blank)

Following is the output is as follows:

files are merged
ttpoint.txt will have final content as "Java is a programing language. kotlin is a programing language."

Algorithm

Following is the algorithm to merge contents of two files into a third file using C

Begin
   Declare a[] array to the character datatype.
      Initialize a[] = "Java is a programing language.".
   Declare i of the integer datatype.
      Initialize i =0.
   Declare f1 as a pointer to the FILE type.
   Open a file "java.txt" to perform write operation using f1 pointer.
   while (a[i] != '\0')
      call fputc(a[i], f1) to put all data of a[] into f1 file object i++
   Close the f1 file pointer.
   Declare a[] array to the character datatype.
      Initialize b[] = " kotlin is a programing language.".
   Declare i of the integer datatype.
      Initialize j =0.
   Declare f2 as a pointer to the FILE type.
   Open a file "kotlin.txt" to perform write operation using f2 pointer.
   while (b[j] != '\0')
      call fputc(b[j], f1) to put all data of b[] into f2 file object j++
   Close the f2 file pointer.
   Open a file "java.txt" to perform read operation using f1 pointer.
   Open a file "ttpoint.txt" to perform write operation using f2 pointer.
   Declare f3 as a pointer to the FILE datatype.
   Open a file "ttpoint.txt" to perform write operation using f3 pointer.
   Declare a variable "c" to the character datatype.
   if (f1 == NULL || f2 == NULL || f3 == NULL) then
      print "couldn't open the file."
      Exit.
   While ((c = fgetc(f1)) != EOF) do
      Put all data of "c" variable into f3 file pointer using fputc() function.
   while ((c = fgetc(f2)) != EOF) do
      Put all data of "c" variable into f3 file pointer using fputc() function.
   Call fclose(f3) function to close the file pointer.
   Open the file ttpoint.txt using f3 file pointer.
   Print "Merged java.txt and python.txt into ttpoint.txt"
   while (!feof(f3))
      Call putchar(fgetc(f3)) function to print the content of f3 file pointer.
   Close the f1 file pointer.
   Close the f2 file pointer.
   Close the f3 file pointer.
End.

C Program to Merge Contents of Two Files into a Third File

The program writes two strings into separate files as 'java.txt' and 'kotlin.txt', then reads both and merges their contents into a third file 'ttpoint.txt' and display the output of the merged content of file 1 and file 2 into file 3:

#include <stdio.h>
#include <stdlib.h>
int main() {
   char a[] = "Java is a programing language.";
   int i=0;
   FILE *f1; // Open two files to be merged
   f1 = fopen("java.txt", "w");
   while (a[i] != '\0') {
      fputc(a[i], f1);
      i++;
   }
   fclose(f1);
   char b[] = "kotlin is a programing language.";
   int j =0;
   FILE *f2;
   f2 = fopen("kotlin.txt", "w");
   while (b[j] != '\0') {
      fputc(b[j], f2);
      j++;
   }
   fclose(f2);
   f1 = fopen("java.txt", "r");
   f2 = fopen("kotlin.txt", "r");
   FILE *f3 = fopen("ttpoint.txt", "w"); // Open file to store the result
   char c;
   if (f1 == NULL || f2 == NULL || f3 == NULL) {
      puts("Could not open files");
      exit(0);
   }
   while ((c = fgetc(f1)) != EOF) // Copy contents of first file to ttpoint.txt
   fputc(c, f3);
   while ((c = fgetc(f2)) != EOF) // Copy contents of second file to ttpoint.txt
   fputc(c, f3);
   fclose(f3);
   f3 = fopen("ttpoint.txt", "r");
   printf("Merged java.txt and kotlin.txt into ttpoint.txt\n");
   while (!feof(f3))
   putchar(fgetc(f3));
   fclose(f1); //closing the file pointer.
   fclose(f2);
   fclose(f3);
   return 0;
}

Following is the output to the above program:

Merged java.txt and kotlin.txt into ttpoint.txt
Java is a programing language.kotlin is a programing language.
Revathi Satya Kondra
Revathi Satya Kondra

Technical Content Writer, Tutorialspoint

Updated on: 2025-05-30T17:52:18+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements