新人--在这论坛的第一个问题
大家好,我想编一个程序,但是现在不会编,所以想请教各位前辈,功能是将一个a.txt文档的重复内容删除,然后输出到没有重复的文档b.txt里面,a.txt的内容是如下的形式的(例):
陈白光
陈白光
斯蒂格
历年来
历年来
朗上的
陈白光
斯蒂格
则输出b.txt的内容为:
陈白光
斯蒂格
历年来
朗上的
#include<stdio.h> #include<stdlib.h> #include<string.h> #define M 1000 #define N 10 typedef struct { char rec[N]; int num; } LIS; LIS lis[M]; int num = -1; int cmpR(const void *a, const void *b) { return strcmp(((LIS*)a)->rec, ((LIS*)b)->rec); } int cmpN(const void *a, const void *b) { return ((LIS*)a)->num - ((LIS*)b)->num; } int main(void) { int i; freopen("a.txt", "r", stdin); freopen("b.txt", "w", stdout); while(~scanf("%s", lis[++num].rec)) lis[num].num = num; qsort(lis, num, sizeof(LIS), cmpR); for(i=1; i<=num; i++) { if(!strcmp(lis[i].rec, lis[i-1].rec)) { lis[i-1].num = -1; } } qsort(lis, num, sizeof(LIS), cmpN); for(i=0; i<num; i++) { if(~lis[i].num) { printf("%s\n", lis[i].rec); } } return 0; }