用c语言编写一个程序,比较2个文本文件的内容是否相同,并输出2个文件中第一次出现不同字符内容的行号及列值。
时间: 2024-03-09 10:45:29 浏览: 112
好的,这是一个比较基础的文件比较程序,以下是使用C语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LEN 1000
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: %s <file1> <file2>\n", argv[0]);
return 1;
}
FILE *fp1, *fp2;
char line1[MAX_LINE_LEN], line2[MAX_LINE_LEN];
int line_num = 0, col_num = 0;
fp1 = fopen(argv[1], "r");
if (fp1 == NULL) {
perror(argv[1]);
return 1;
}
fp2 = fopen(argv[2], "r");
if (fp2 == NULL) {
perror(argv[2]);
fclose(fp1);
return 1;
}
while (fgets(line1, MAX_LINE_LEN, fp1) != NULL &&
fgets(line2, MAX_LINE_LEN, fp2) != NULL) {
line_num++;
col_num = 0;
// 比较两行内容是否相同
if (strcmp(line1, line2) != 0) {
// 找到第一个不同的字符
while (line1[col_num] == line2[col_num]) {
col_num++;
}
printf("Line %d, Column %d\n", line_num, col_num + 1);
break;
}
}
if (!feof(fp1) || !feof(fp2)) {
printf("Error: file length mismatch\n");
}
fclose(fp1);
fclose(fp2);
return 0;
}
```
这个程序的主要思路是:打开两个文件,逐行读取两个文件的内容并进行比较,如果遇到不同的行,则在该行中找到第一个不同的字符,并输出行号和列号。如果两个文件的长度不同,则输出错误信息。
阅读全文