C语言从两个txt文件中查找相同的行
时间: 2023-08-20 08:07:23 浏览: 56
可以通过以下步骤实现:
1. 打开第一个txt文件并读取每一行,将每一行存储到一个数组中。
2. 打开第二个txt文件并读取每一行,将每一行与第一个数组中的每一个元素进行比较,如果相同则输出该行。
3. 关闭两个文件并结束程序。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LINES 1000
#define MAX_LENGTH 100
int main() {
FILE *file1, *file2;
char lines1[MAX_LINES][MAX_LENGTH], lines2[MAX_LINES][MAX_LENGTH];
char *line1, *line2;
int i, j, num_lines1 = 0, num_lines2 = 0;
// 打开第一个txt文件并读取每一行
file1 = fopen("file1.txt", "r");
if (file1 == NULL) {
printf("Error opening file1.txt");
return 1;
}
while (fgets(lines1[num_lines1], MAX_LENGTH, file1) != NULL) {
// 去掉行末的换行符
lines1[num_lines1][strlen(lines1[num_lines1]) - 1] = '\0';
num_lines1++;
}
fclose(file1);
// 打开第二个txt文件并读取每一行
file2 = fopen("file2.txt", "r");
if (file2 == NULL) {
printf("Error opening file2.txt");
return 1;
}
while (fgets(lines2[num_lines2], MAX_LENGTH, file2) != NULL) {
// 去掉行末的换行符
lines2[num_lines2][strlen(lines2[num_lines2]) - 1] = '\0';
num_lines2++;
// 将每一行与第一个数组中的每一个元素进行比较,如果相同则输出该行
for (i = 0; i < num_lines1; i++) {
if (strcmp(lines2[num_lines2 - 1], lines1[i]) == 0) {
printf("%s\n", lines2[num_lines2 - 1]);
break;
}
}
}
fclose(file2);
return 0;
}
```
注意:上述代码中使用了 fgets 函数来读取每一行,如果行的长度超过 MAX_LENGTH,则只会读取部分内容。如果需要处理更长的行,请适当增加 MAX_LENGTH 的值。