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);'

Reply via email to