查找a1,a2文件中的重复内容

查找a1,a2两个文件中重复内容,输出a3文件,用read,echo类似的程序语句逐行比较

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

#define MAX_LINE_LEN 1024

int main(int argc, char *argv[]) {
    if (argc != 4) {
        printf("Usage: %s <file1> <file2> <file3>\n", argv[0]);
        return 1;
    }

    FILE *fp1 = fopen(argv[1], "r");
    if (fp1 == NULL) {
        printf("Failed to open file %s\n", argv[1]);
        return 1;
    }

    FILE *fp2 = fopen(argv[2], "r");
    if (fp2 == NULL) {
        printf("Failed to open file %s\n", argv[2]);
        fclose(fp1);
        return 1;
    }

    FILE *fp3 = fopen(argv[3], "w");
    if (fp3 == NULL) {
        printf("Failed to open file %s\n", argv[3]);
        fclose(fp1);
        fclose(fp2);
        return 1;
    }

    char line1[MAX_LINE_LEN];
    char line2[MAX_LINE_LEN];

    while (fgets(line1, MAX_LINE_LEN, fp1) != NULL) {
        rewind(fp2);
        while (fgets(line2, MAX_LINE_LEN, fp2) != NULL) {
            if (strcmp(line1, line2) == 0) {
                fputs(line1, fp3);
                break;
            }
        }
    }

    fclose(fp1);
    fclose(fp2);
    fclose(fp3);

    return 0;
}

GPT:

#!/bin/bash

# 文件名
file1="a1.txt"
file2="a2.txt"
output="a3.txt"

# 清空输出文件
> "$output"

# 逐行比较
while IFS= read -r line; do
    if grep -Fxq "$line" "$file2"; then
        echo "$line" >> "$output"
    fi
done < "$file1"