查找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"