#include <stdio.h>
#include <string.h>

#define MAX_LINE_LENGTH 1024

void check_files(const char *bom_file, const char *user_file) {
    FILE *bom, *user;
    char bom_line[MAX_LINE_LENGTH], user_line[MAX_LINE_LENGTH];
    int line_number = 1;

    // เปิดไฟล์ BOM และไฟล์ที่ผู้ใช้เขียนขึ้น
    bom = fopen(bom_file, "r");
    if (bom == NULL) {
        printf("ไม่พบไฟล์ BOM: %s\n", bom_file);
        return;
    }

    user = fopen(user_file, "r");
    if (user == NULL) {
        printf("ไม่พบไฟล์ที่ผู้ใช้เขียนขึ้น: %s\n", user_file);
        fclose(bom);
        return;
    }

    // อ่านบรรทัดทีละบรรทัดและตรวจสอบความถูกต้อง
    while (fgets(bom_line, MAX_LINE_LENGTH, bom) != NULL && fgets(user_line, MAX_LINE_LENGTH, user) != NULL) {
        // ตัดเครื่องหมาย newline ออกจากท้ายบรรทัด
        bom_line[strcspn(bom_line, "\n")] = '\0';
        user_line[strcspn(user_line, "\n")] = '\0';

        // เปรียบเทียบบรรทัดจากไฟล์ BOM และไฟล์ที่ผู้ใช้เขียนขึ้น
        if (strcmp(bom_line, user_line) != 0) {
            printf("บรรทัดที่ %d ไม่ถูกต้อง โปรดตรวจสอบ\n", line_number);
        }

        line_number++;
    }

    // ตรวจสอบหากจำนวนบรรทัดไม่ตรงกัน
    if (fgets(bom_line, MAX_LINE_LENGTH, bom) != NULL || fgets(user_line, MAX_LINE_LENGTH, user) != NULL) {
        printf("จำนวนบรรทัดในไฟล์ไม่เท่ากัน!\n");
    }

    // ปิดไฟล์
    fclose(bom);
    fclose(user);
}

int main() {
    const char *bom_file = "bom_file.txt";
    const char *user_file = "user_file.txt";

    // เรียกฟังก์ชันเพื่อเปรียบเทียบไฟล์
    check_files(bom_file, user_file);

    return 0;
}