新人--在这论坛的第一个问题
大家好,我想编一个程序,但是现在不会编,所以想请教各位前辈,功能是将一个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;
}
