luc087.c (1864B)
1 /* Write a program that merges lines alternately from two files and writes the results to a new file. Handle remaining lines if file sizes differ. 2 */ 3 /* Let Us C, Chap- 19 (File Input/Output), Qn No.: B(c) */ 4 5 /* This file is auto-generated by a bot. */ 6 /* This code is not compiled; it is for reference only. */ 7 8 9 #include <stdio.h> 10 #include <stdlib.h> 11 #include <string.h> 12 #include <ctype.h> 13 14 void create_sample_files(); 15 16 int main() 17 { 18 FILE *fp1, *fp2, *fp3; 19 char line1[100], line2[100]; 20 char *res1, *res2; 21 22 create_sample_files(); 23 24 fp1 = fopen("file1.txt", "r"); 25 fp2 = fopen("file2.txt", "r"); 26 fp3 = fopen("merge.txt", "w"); 27 28 if (fp1 == NULL || fp2 == NULL || fp3 == NULL) 29 { 30 printf("File error.\n"); 31 exit(1); 32 } 33 34 // Read lines from both files 35 res1 = fgets(line1, sizeof(line1), fp1); 36 res2 = fgets(line2, sizeof(line2), fp2); 37 38 while (res1 != NULL && res2 != NULL) 39 { 40 fputs(line1, fp3); 41 fputs(line2, fp3); 42 43 res1 = fgets(line1, sizeof(line1), fp1); 44 res2 = fgets(line2, sizeof(line2), fp2); 45 } 46 47 // Append remaining lines from file 1 48 while (res1 != NULL) 49 { 50 fputs(line1, fp3); 51 res1 = fgets(line1, sizeof(line1), fp1); 52 } 53 54 // Append remaining lines from file 2 55 while (res2 != NULL) 56 { 57 fputs(line2, fp3); 58 res2 = fgets(line2, sizeof(line2), fp2); 59 } 60 61 printf("Files merged alternately into 'merge.txt'.\n"); 62 63 fclose(fp1); 64 fclose(fp2); 65 fclose(fp3); 66 67 return 0; 68 } 69 70 void create_sample_files() 71 { 72 FILE *f1 = fopen("file1.txt", "w"); 73 FILE *f2 = fopen("file2.txt", "w"); 74 75 fprintf(f1, "File 1 - Line A\nFile 1 - Line B\nFile 1 - Line C\n"); 76 fprintf(f2, "File 2 - Line 1\nFile 2 - Line 2\nFile 2 - Line 3\nFile 2 - Line 4\n"); 77 78 fclose(f1); 79 fclose(f2); 80 }