编辑代码

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

int main() {
    // 打开两个文件进行比较
    FILE *file1 = fopen("file1.txt", "r"); // 请将 "file1.txt" 替换为第一个文件的路径
    FILE *file2 = fopen("file2.txt", "r"); // 请将 "file2.txt" 替换为第二个文件的路径

    // 检查文件是否成功打开
    if (file1 == NULL || file2 == NULL) {
        perror("文件打开失败");
        return 1;
    }

    char line1[1024]; // 假设每行不超过 1024 个字符
    char line2[1024];
    int line_number = 0; // 用于记录行号

    // 逐行比较两个文件
    while (1) {
        // 从两个文件中读取一行
        if (fgets(line1, sizeof(line1), file1) == NULL || fgets(line2, sizeof(line2), file2) == NULL) {
            // 一旦其中一个文件结束,就退出循环
            break;
        }

        // 增加行号
        line_number++;

        // 比较两行内容
        int len1 = strlen(line1);
        int len2 = strlen(line2);
        int min_len = len1 < len2 ? len1 : len2; // 取两行中较短的长度

        // 查找不同的字符
        int different_char_position = -1;
        for (int i = 0; i < min_len; i++) {
            if (line1[i] != line2[i]) {
                different_char_position = i;
                break;
            }
        }

        if (different_char_position >= 0) {
            // 如果找到不同的字符,输出行号和不同的字符
            printf("不同的行号:%d\n", line_number);
            printf("不同的字符:%c (file1) vs %c (file2)\n", line1[different_char_position], line2[different_char_position]);
            break; // 找到第一个不同处后退出循环
        }
    }

    // 关闭文件
    fclose(file1);
    fclose(file2);

    return 0; // 表示程序正常退出
}