去除文本文件中重复的行

来源:互联网 发布:mac 用户文件夹迁移 编辑:程序博客网 时间:2024/05/17 22:03
#include <iostream>using namespace std;#define LINECOUNT 1000#define LINESIZE  512#define SIZE (LINECOUNT*LINESIZE)void main(int argc, const char *argv[]){char *filename = "in.txt";char readbuffer[SIZE] = {0};char analyze[LINECOUNT][LINESIZE] = {{0}};int  line[LINECOUNT] = {0};FILE *fp = fopen(filename, "rb");if(fp == NULL){printf("open file error\n");exit(1);}fread((void*)readbuffer, LINESIZE, LINECOUNT, fp);int i = 0;int j = 0;int k = 0;for(i = 0; (i < SIZE) && (readbuffer[i]); i++){if(readbuffer[i]!='\n'){analyze[j][k] = readbuffer[i];k++;}else{j++;k=0;if(j >= LINECOUNT)break;}}for(i = 1; (i < LINECOUNT) && (analyze[i][0]!=0); i++){bool flag = false;for(j = 0; j < i - 1; j++){if( 1 == line[j] )continue;for( k = 0; (k < LINESIZE) && (analyze[i][k]==analyze[j][k]) && (analyze[i][k]); k++);if( k == LINESIZE ){flag = true;//find the record}if( analyze[i][k] == analyze[j][k] ){flag = true;//find the record}if(flag)break;}if(flag){line[i] = 1;}}for(i = 0; i < LINECOUNT && (analyze[i][0]!=0); i++){if( 0 == line[i] ){printf("%s\n", analyze[i]);}}if(fp == NULL){fclose(fp);fp = NULL;}system("pause");}

0 0
原创粉丝点击