Merging two files using C program

In summary, you can merge two files by opening them in read mode, reading from both files, and writing the data to the merged file.
  • #1
kthouz
193
0
How can i use c program two merge two files. Does it have to do with "pointers" or am going wrong!
 
Technology news on Phys.org
  • #2
Open file "first" and file "second" in read mode using the fopen function; also open file "merged" in write mode using the fopen function; then read from files "first" and "second" and write what you read to file "merged"; then close all three files and you are done.

I'm sure there are more details involved that may or may not require pointers, depending on the exact nature of your assignment, but these basic steps do not use them.
 
  • #3
Thanks for your answer. Just can you please give a me an example of a sample program to open another one because it's the first time i hear about fopen function. But don't worry tell me ill figure it out!
 
  • #4
Code:
FILE * fp;

fp = fopen("filename.txt", "wt");

fprintf(fp, "Hello fopen\n");

fclose(fp);

See http://www.cplusplus.com/reference/clibrary/cstdio/fopen.html
 
  • #5
What platform are you programming in? You can make use of the linux system calls - open(), read(), and write(). Open() has the O_APPEND flag that opens a file in append mode, thereby adding data to the end of the file. You can use this to merge your two files. Read the manual pages of the respective functions for a detailed description. Then again fopen() does have th "a" flag for append.
 
Last edited:
  • #6
I don't imagine you're allowed to be so sneaky as to make an OS call, like "copy first+second merged" (DOS./cmd) or "cat first second > merged" (bash)?
 
  • #7
This is a somewhat 'tedious' but portable way to do it in C.

Opening the primary file for 'update' rather than 'append' has the effect of removing the EOF marker before appending new data.


#include <stdio.h>
#include <stdlib.h>
#include <io.h>

#ifdef BYTE
#undef BYTE
#endif

#define BYTE unsigned char

BYTE *buf2;
long size;
FILE *fp1, *fp2;

//open file-1 for update, file-2 for read
fp1=fopen(fname1,"a+");
fp2=fopen(fname2,"rb");

//get size of file-2
fseek(fp2,0,SEEK_END);
size=ftell(fp2);
rewind(fp2);

//allocate buffer, read-in file-2
buf2=(BYTE *)malloc((size_t)size);
fread(buf2,size,1,fp2);

//write the buffer to (end of) file-1
fwrite(buf2,size,1,fp1);

//clean-up and close
free(buf2);
fclose(fp1);
fclose(fp2);

It'd be a good idea to do some error checking if you use this code for anything serious...
 
  • #8
message

Give the program to merge two files into a single one ic C Programming
 
  • #9
Dos command:

copy filein1/b+filein2/b fileout/b

If this is a windows console program, you might want to use CreateFile and related commands instead fopen, but the program would be less "portable" to other OS's.
 
  • #10
sunil bhatt said:
Give the program to merge two files into a single one ic C Programming

Which part of

morongo said:
This is a somewhat 'tedious' but portable way to do it in C.

Opening the primary file for 'update' rather than 'append' has the effect of removing the EOF marker before appending new data.


#include <stdio.h>
#include <stdlib.h>
#include <io.h>

#ifdef BYTE
#undef BYTE
#endif

#define BYTE unsigned char

BYTE *buf2;
long size;
FILE *fp1, *fp2;

//open file-1 for update, file-2 for read
fp1=fopen(fname1,"a+");
fp2=fopen(fname2,"rb");

//get size of file-2
fseek(fp2,0,SEEK_END);
size=ftell(fp2);
rewind(fp2);

//allocate buffer, read-in file-2
buf2=(BYTE *)malloc((size_t)size);
fread(buf2,size,1,fp2);

//write the buffer to (end of) file-1
fwrite(buf2,size,1,fp1);

//clean-up and close
free(buf2);
fclose(fp1);
fclose(fp2);

It'd be a good idea to do some error checking if you use this code for anything serious...

did you not understand?
 

Related to Merging two files using C program

1. How can I merge two files using a C program?

To merge two files using a C program, you can use the fopen() function to open both files, and then use the fgetc() function to read characters from one file and write them to the other file using the fputc() function.

2. What is the syntax for merging two files in C?

The syntax for merging two files in C is as follows:

FILE *fp1, *fp2, *mergedFile;
fp1 = fopen("file1.txt", "r");
fp2 = fopen("file2.txt", "r");
mergedFile = fopen("merged_file.txt", "w");
int c;
while((c = fgetc(fp1)) != EOF)
{
    fputc(c, mergedFile);
}
while((c = fgetc(fp2)) != EOF)
{
    fputc(c, mergedFile);
}
fclose(fp1);
fclose(fp2);
fclose(mergedFile);

3. Can I merge two files with different file extensions?

Yes, you can merge two files with different file extensions using the same method as merging two files with the same extension. The important thing is that both files can be opened and read by the fopen() function.

4. Is it possible to merge more than two files using a C program?

Yes, it is possible to merge more than two files using a C program. You can use a similar approach as merging two files, but instead of using one fgetc() and fputc() function, you can use a loop to iterate through all the files and write the characters to the merged file.

5. How do I check if the files have been successfully merged?

You can check if the files have been successfully merged by opening the merged file in a text editor or using the fgetc() function to read the merged file and print the characters to the console. If the merged file contains all the characters from both files, then the merge was successful.

Similar threads

  • Programming and Computer Science
Replies
2
Views
529
  • Programming and Computer Science
Replies
3
Views
1K
  • Programming and Computer Science
Replies
3
Views
581
  • Programming and Computer Science
Replies
9
Views
774
  • Programming and Computer Science
Replies
2
Views
852
  • Programming and Computer Science
3
Replies
81
Views
5K
  • Programming and Computer Science
Replies
2
Views
482
  • Programming and Computer Science
Replies
2
Views
1K
  • Programming and Computer Science
Replies
33
Views
2K
  • Programming and Computer Science
Replies
1
Views
742
Back
Top