Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chương trình C để so sánh hai tệp và báo cáo sự không khớp

Trong ngôn ngữ lập trình C, người lập trình có thể vượt quá các tệp và đọc và ghi nội dung trong đó.

Tệp là một bộ nhớ đơn giản khối có thể lưu trữ thông tin, ở đây chúng tôi chỉ quan tâm đến văn bản.

Trong chương trình này, chúng tôi sẽ so sánh hai tệp và báo cáo sự không khớp xảy ra. Các tệp này gần như giống hệt nhau nhưng có thể có một số ký tự khác nhau. Ngoài ra, chương trình sẽ trả về dòng và vị trí của tệp mà tại đó sự không khớp đầu tiên xảy ra.

Thuật toán

Step 1: Open both the file with pointer at the starting.
Step 2: Fetch data from file as characters one by one.
Step 3: Compare the characters. If the characters are different then return the line and position of the error character.

Ví dụ

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void compareFiles(FILE *file1, FILE *file2){
   char ch1 = getc(file1);
   char ch2 = getc(file2);
   int error = 0, pos = 0, line = 1;
   while (ch1 != EOF && ch2 != EOF){
      pos++;
      if (ch1 == '\n' && ch2 == '\n'){
         line++;
         pos = 0;
      }
      if (ch1 != ch2){
         error++;
         printf("Line Number : %d \tError"
         " Position : %d \n", line, pos);
      }
      ch1 = getc(fp1);
      ch2 = getc(fp2);
   }
   printf("Total Errors : %d\t", error);
}
int main(){
   FILE *file1 = fopen("file1.txt", "r");
   FILE *file2 = fopen("file2.txt", "r");
   if (file1 == NULL || file2 == NULL){
      printf("Error : Files not open");
      exit(0);
   }
   compareFiles(file1, file2);
   fclose(file1);
   fclose(file2);
   return 0;
}

Đầu ra

// content of the files
File1 : Hello!
Welcome to tutorials Point
File2: Hello!
Welcome to turoials point
Line number: 2 Error position: 15
Total error : 1