Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C so sánh hai file và báo lỗi khác biệt

Bài toán

So sánh hai file văn bản, báo dòng và vị trí ký tự đầu tiên khác nhau, đồng thời đếm tổng số lỗi.

Thuật toán

Bước 1: Mở hai file với con trỏ ở đầu
Bước 2: Đọc từng ký tự từ cả hai file
Bước 3: So sánh ký tự. Nếu khác → in dòng, vị trí, tăng bộ đếm lỗi
Bước 4: Xử lý ký tự xuống dòng (\n) để cập nhật số dòng, reset vị trí
Bước 5: In tổng số lỗi

Mã nguồn C

#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("Dòng: %d \t Vị trí lỗi: %d\n", line, pos);
        }
        ch1 = getc(file1);
        ch2 = getc(file2);
    }
    printf("Tổng lỗi: %d\n", error);
}

int main() {
    FILE *file1 = fopen("file1.txt", "r");
    FILE *file2 = fopen("file2.txt", "r");
    if (file1 == NULL || file2 == NULL) {
        printf("Lỗi: Không mở được file");
        exit(0);
    }
    compareFiles(file1, file2);
    fclose(file1);
    fclose(file2);
    return 0;
}

Ví dụ kết quả

File1: Hello! Welcome to tutorials Point
File2: Hello! Welcome to turoials point
Dòng: 2  Vị trí: 15
Tổng lỗi: 1