szöveg feldolgozás karakterenként

Fórumok

Sziasztok!

A minap talalkoztam a következő feladattal:
Adott egy bemeneti file, amelynek minden sora egy URL-t tartalmaz a következő formátumban:
http://[usernév[:password]@]hostname/eleresiut/filenev[?parameterek]
A [] közti részek opcionálisak.
A feladat az URL ek különböző adattagjainak kinyerése, méghozzá úgy hogy a bemeneti filet csak karakterenként olvashatjuk és egy karaktert csak egyszer olvashatunk be. Ti ezt hogyan oldanátok meg?
Itt főleg az érdekelne hogy hogyan kezelitek azokat az eseteket, ahol opcionális adattag van,de azt hogy jelen van e az adattag, csak a későbbi input határozza meg. (pl az username mező esetén a @ karakter)
Előre is köszi!

Hozzászólások

lex/flex yacc/bison kombó
Early algoritmus vagy CYK algoritmus, (egyéb verem automata)
BNF

Miért nem olvasod be az egész sort egyszerre, aztán már könnyen szét tudod szedni. Persze enélkül is lehet ügyeskedni, de ha csak ez okozná a gondot, akkor talán ez a legegyszerűbb.

Most lehet nem segítettem sokat.

használsz egy char vemet.
http:// eldobod, ha nem ezzel kezdődik hiba.

teszed le a verembe charokat.
ha kettőspontot találasz akkor, a vermben user név van kiszed eltárol.
ha @ jelet és nem volt user név kiszedve a veremböl, akkor usernév van a veremben, ha nem akkor jelszó kiszed eltárol.

pakolászol tovább
ha / találasz a veremben lévő cucc a hostname, kiszed eltárol (szerk: ha itt is vége lehet akkor, annak megfelően cselekedsz..)

pakolászol tovább
ha végére érsz akkor vagy ? jelet találsz, veremben a / ig vagy verem aljáig filenév van, a többi az elérési út.

ha kérdő jelet találtál az összes többi paraméter.

realloc, malloc használatát minimalizáld.
Foglalj le egy várható elemszámnak elgendő helyett elsőre (verem/stack), és ne 1 karakterenként bővitsd, ha kevés...

plusz hiba null hoszú sztrinkeg eltárolása lehet.

strndup() a barátod.

regexp.
---
Reactor error - core dumped!