比较两个文件,输出凡是含有相同的字符串。错开行比较。

[ 本帖最后由 a13780393 于 2013-1-2 14:12 编辑 ]
#include <stdio.h> #include <string.h> #define MAX 100 int main(void) { char buffer_1[MAX]; /* 读取文件1 */ char buffer_2[MAX]; /* 读取文件2 */ int count1 = 0; /* 记录buffer字符个数 */ int count2 = 0; int row1 = 0; /* 行数 */ int row2 = 0; FILE *pfile1 = NULL; /* 调用文件的指针 */ FILE *pfile2 = NULL; char *filename1 = "E:\\才、\\Test\\1.txt"; /* 文件路径 */ char *filename2 = "E:\\才、\\Test\\2.txt"; if(!(pfile1 = fopen(filename1, "r"))) { printf("读取文件%s失败\n",filename1); return 1; } if(!(pfile2 = fopen(filename2, "r"))) { printf("读取文件%s失败\n",filename2); return 1; } for(;;) { row1++; /* 递增行数 */ while((buffer_1[count1++] = fgetc(pfile1)) != '\n'); buffer_1[--count1] = '\0'; if(feof(pfile1)) break; for(;;) { row2++; count2 = 0; while((buffer_2[count2++] = fgetc(pfile2)) != '\n' && buffer_2[count2-1] != EOF ); if(feof(pfile2)) break; buffer_2[--count2] = '\0'; if(strcmp(buffer_1, buffer_2) == 0) printf("相同字符串:\n%s\n%s\n文件1行号: %-8d文件2行号:%2d\n\n", buffer_1, buffer_2, row1, row2); } rewind(pfile2); count1 = 0; row2 = 0; } fclose(pfile1); fclose(pfile2); return 0; }