7、C語言比比兩個文字檔案的內容差異
阿新 • • 發佈:2019-01-05
#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目標要求),然後比對兩個檔案的不同資料,並且處理,先將不同行資料讀出,存入一個臨時檔案,然後在處理;