вобщем нужна мне была какта прогу которая удаляет дубликаты но без всяких там фич которыми я не когда пользоватся не буду, и кто знает вдруг там умная зараза сидит, вобщем софту не очень верю и теперь все сам пишу. может комуто тоже пригодится уборщик повторных асек лично у меня 10к асек из них 40% повторы, у меня не выдержали нервы искать и в ручную удалять #include <stdio.h> #include<string.h> void main() { char source[]="c:\\uins.txt"; char dest[]="c:\\done.txt"; char buf[256]; char tmpBuf[256]; FILE *src; FILE *tmp; FILE *dst; int flag; src=fopen(source,"rt"); dst=fopen(dest,"w+t"); fgets(buf,256,src); while(!feof(src)) { flag=1; tmp=fopen(source,"rt"); fgets(tmpBuf,256,tmp); while(ftell(tmp)<ftell(src)&&flag) { if(strcmp(tmpBuf,buf)==0) flag=0; else fgets(tmpBuf,256,tmp); } if(flag) { fputs(buf,dst); } fclose(tmp); fgets(buf,256,src); } flushall(); getchar(); } все просто создаем uins.txt (тут где вы думаете что есть дубликаты) все повторы будут удаленны и нормальные аси запишутся тут done.txt вобщем все на сегодня
ch@ch - 90% это 9 знаки... да бывает что она типо зависла если там больше 40к уинов но на самом деле она работает... такова не было чтоб зависала у меня пень 4 3.0 интельно 512 ддр вобщем у меня все работает если хотите добовляете в это код он октрыт для всех
реализация этого на Perl =) Code: open(incom, "<./in.txt"); @IN = <incom>; @IN = grep{!$_{$_}++} @IN; close(incom); open(out, ">./out.txt"); print out @IN; close(out);
вот на Perl'е тоже удаляет повторы,давно пользуюсь Code: #!/usr/bin/perl -w open(IN, "< UinIN.txt") or die "Can't open file: $!"; open(OUT, "+> UinOut.txt") or die "Can't open file out.txt for writing: $!"; @input = <IN>; close(IN); %seen = (); foreach $item (@input) { unless ($seen{$item}) { $seen{$item} = 1; print OUT $item; } } close(OUT);