C Program to Merge Two Files

In this article, you will learn and get code about merging of two files. Merging two files means the content of any two files (entered by user at run-time) gets merged into the third file in a way that, the content of first source file gets copied to the target file, and then the content of second source file gets appended to the target file.

Things to Do before Program

Before going through the program, let's first create three files (inside the current directory) namely:

  • codes.txt - as first source file
  • cracker.txt - as second source file
  • codescracker.txt - as target file

All the above files must be saved in a directory where you are saving (your previous programs) or going to save the program given below. Put the following content, inside codes.txt file:

I'm inside codes.txt file

And then put the following content, inside cracker.txt file:

I'm inside cracker.txt file

The third file named codescracker.txt remains blank (without any content). Because the program given below, merged the content of both the files namely codes.txt and cracker.txt into it. Because, I'm saving my source code file in a folder named c programs available to its parent directory Documents of C-Drive of my computer. So here is the snapshot of c programs folder:

merge two files in c

Now let's move on to the program given below.

Merge the Content of Two Files in a Third File

The question is, write a program in C to merge two files and write it in a new file. The answer to this question is:

int main()
    FILE *fsOne, *fsTwo, *fTarget;
    char fName1[20], fName2[20], fName3[30], ch;
    printf("Enter the Name of First Source File: ");
    printf("Enter the Name of Second Source File: ");
    printf("\nEnter the Name of Target File: ");
    fsOne = fopen(fName1, "r");
    fsTwo = fopen(fName2, "r");
    if(fsOne==NULL || fsTwo==NULL)
        printf("\nError Occurred while Opening the Source File!");
        fTarget = fopen(fName3, "w");
            printf("\nError Occurred while Opening the Target File!");
            ch = fgetc(fsOne);
               fputc(ch, fTarget);
               ch = fgetc(fsOne);
            ch = fgetc(fsTwo);
                fputc(ch, fTarget);
                ch = fgetc(fsTwo);
            printf("\n%s and %s Merged into %s Successfully!", fName1, fName2, fName3);
    return 0;

This program was build and run under Code::Blocks IDE. Here is the initial snapshot of its sample run:

c program to merge two files

Now enter the name of two source files named codes.txt and cracker.txt that was created at the early of this article. And then enter the name of target file codescracker.txt to copy the content of both files into this file. Here is the sample run:

merge content of two file to third c

If you will open the file codescracker.txt, then you will see that the content of both the files is copied into it.

The two source files codes.txt and cracker.txt is opened in reading mode using r file opening mode. Because we have only to read the content inside these two files.

And the target file codescracker.txt is opened in writing mode using w file opening mode. Because we have to write something (content of both source file) into it.

What if File Doesn't Exist ?

In case, if any file doesn't exist or you have not the permission to access the file, then the function fopen() returns NULL. Therefore, before starting the operation, we have checked whether it returns NULL or not. If it returns NULL, then print an error message, otherwise continue the merge operation.

Using fgetc(), we can get the character using the FILE pointer fsOne and fsTwo one by one. And using fputc(), we can put the character to the file fTarget. Therefore, we have get the character one by one from both the file and put into the third file.

If all the content gets read, then at last, fgetc() function will return EOF (End-Of-File). So here also, we have compared whether the value of ch is equal to EOF or not. If it is not equal to EOF, then continue putting the character, otherwise exit the while loop

Note - After performing all the operation related to file, be sure to close its pointer using fclose() function.

Same Program in Other Languages

C Online Test

« Previous Program Next Program »

Like/Share Us on Facebook 😋