Howdy!
On Wed, 5 Jan 2000, Ales Casar wrote:
> > tole ti isce string samo na zacetku vsakih 1000bytov..
> > izboljsava:
> [...]
> > while(!feof(f))
> > {
> > fgets(buff,1024,f);
> > if(p=strstr(buff,"user="))
> > {
> > printf("%s\n",p);
> > return 0;
> > }
> > }
>
> Tole je res veliko boljse, ampak vseeno bos izpustil zadetke, kjer se bo
> tisti "user=" pojavil delno na koncu enega bloka in z drugim delov v
> zacetku naslednjega bloka. Za delujoco resitev bodo potrebne se dodatne
> izboljsave.
Moj recept je res predvideval, da je tisti 'user=' nazacetku bloka. Je pa
tako, da fgets() prebere *najvec* neko stevilo znakov (drugi parameter),
sicer pa se branje prekine na koncu vrstice. Edini problem je torej
takrat, kadar imas ekstremno dolge vrstice.
Hard-core resitev je, da pogledas dolzino datoteke (ali obstaja posebna
funikcija za to?; moj recept bi bil { fseek (file, 0L, SEEK_END);
size=ftell(file) } ), potem pa alociras buffer te velikosti. In potem
naredis zanko branja iz datoteke, vsakokrat pa poizkusis prebrati celotno
datoteko.
Peace!
Mkx
---- perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'