1. 程式人生 > >7、C語言比比兩個文字檔案的內容差異

7、C語言比比兩個文字檔案的內容差異

#include <stdio.h>
#include <string.h>
#define MAXLEN 257
#define MAXLEN 257
void CompareFile(FILE *fa,FILE *fb,FILE *flog) {
char sa[MAXLEN],sb[MAXLEN],temp[MAXLEN],flag;
fgets(sa,MAXLEN,fa);
while(!feof(fa)&&!feof(fb)) {
fgets(sa,MAXLEN,fa);
 fgets(sb,MAXLEN,fb);
 
 if(strcmp(sa,sb) != 0) { 
 if(0==strcmp(sa,temp)) ; //消除重複資料 最後一行回車
else  {fputs(sa,flog);  fputs(sb,flog);}  strcpy(temp,sa);}
}
}
int  main( )
{
	FILE *fa,*fb,*flog;
fa = fopen("a.seg","rt"); //真實資料 存在第一行沒用的資料
fb = fopen("b.seg","rt");
flog = fopen("log.txt","wt"); //at+
if(fa == NULL ) {
printf("actual seg 檔案未找到。\n");
return 1;
}
if( fb == NULL ) {
printf("expect  seg檔案未找到。\n");
return 1;
} 
CompareFile(fa,fb,flog);
fclose(fa);
fclose(fb);
fclose(flog);
return 0;	
}

檔案a.seg 內容

;; 0.002698
3.65 4.21 0
4.54 7.14 1
9.89 10.63 1
13.43 16.11 1
16.49 17.26 0
17.45 18.10 0
18.14 18.90 0
19.73 20.46 1
20.71 21.46 0
22.04 22.18 0
22.94 24.70 1
25.37 25.84 0
25.88 27.94 0
28.64 30.88 1
31.11 32.05 1
33.28 33.67 0
33.71 34.03 0
34.16 34.48 0
34.52 35.17 0
36.29 37.72 1
44.35 46.90 1
47.48 48.55 0
48.62 49.39 1
50.32 51.04 0
51.35 52.30 1
53.23 53.62 1
53.92 54.79 1
54.83 56.55 1
56.79 57.43 1

檔案b.seg 內容

3.65 4.21 0
4.54 7.14 1
9.89 10.63 1
13.43 16.11 1
16.49 17.26 0
17.45 18.10 0
18.14 18.90 0
19.73 20.46 1
20.71 21.46 0
22.04 22.18 0
22.94 24.70 1
25.37 25.84 0
25.88 27.94 0
28.64 30.88 1
31.11 32.05 1
33.28 33.67 0
33.71 34.03 0
34.16 34.48 0
34.52 35.17 0
36.29 37.72 1
44.35 46.90 1
47.48 48.55 0
48.62 49.39 1
50.32 51.04 0
51.35 52.30 1
53.23 53.62 0
53.92 54.79 1
54.83 56.55 1
56.79 57.43 0

基本題意是:(跳過a.seg的第一行無用資料,t目標要求),然後比對兩個檔案的不同資料,並且處理,先將不同行資料讀出,存入一個臨時檔案,然後在處理;