Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: merkkijonojen parsiminen tiedostosta

MagFed [27.11.2006 02:49:40]

#

Olen tässä nyt jonkun aikaa yrittänyt parsia html-tiedostosta tarpeellista tietoa merkkijono(i)ksi. C:ssä ei tietenkään ole mitään Java-tyylisiä elämää helpottavia regular expressioneita, joten homma on ollut haastavampaa.

Mikäli hakuehdon ensimmäisestä merkistä tulee osuma, tutkitaan seuraavia merkkejä tarkemmin ja jos niistä muodostuu etsityn paikan alku, aletaan tallettamaan merkkejä stringiksi. Itse etsin sivulta paikkaa missä ensimmäinen <div> alkaa, joten alla olevassa esimerkkikoodissa hakuehtonani olivat merkit '<' ja 'd':

char c;
char d;

do {
   c = fgetc(fp);
   if (c=='<') d=fgetc(fp);
   if (c=='<' && d=='d') {
	/* oikea paikka löytyi, otetaan halutun kokoinen stringi talteen */
   }
} while(c != EOF);

Kysynkin, että tietääkö kukaan C:lle parempaa tapaa tehdä em. etsintä kuin käydä fgetc:llä merkki kerrallaan tiedostoa läpi?

tsuriga [27.11.2006 02:56:53]

#

http://www.nathanr.net/programming/hints/pcre.shtml

pukki [27.11.2006 14:27:10]

#

Jos pitää vain löytää "<div" sen tekstin seasta, niin
strstr()-funktiolla (#include <string.h>), saa tuon haettua.

char *html; /* osoitin muistiin, johon tuo tiedosto on luettu */

char *div_p = strstr(html, "<div");

strstr() palauttaa osoittimen löytyneen merkkijonon alkuun tai NULL jos merkkijonoa ei löydy.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta