[C] char pointer als FILE benaderen

Pagina: 1
Acties:

Onderwerpen


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Ik heb een parser (lex/yacc) die slikt (voor zover ik weet) alleen FILE pointers als input.

Ik heb een string, door gebruiker vanuit command line meegegeven, die ik wil gaan parsen. Deze eerst als (tmp)file op te slaan en te gaan parsen is ook zo wat. Ik het mogelijk een char* naar een FILE* om te zetten zodat de f-functies (fread, frwite, etc) hier ook op werken?

Zo niet, hoe kan ik lex/yacc ombouwen dat deze ook char* gaat parsen?

Op internet kan ik hier niets over vinden, alleen HOE je een lex/yacc moet instellen/ configureren.

if broken it is, fix it you should


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je kan overwegen flex te gebruiken, die kan het geloof ik wel. En als het goed is is ie verder compatible met lex.

Overigens, lex aanpassen is natuurlijk ook wel vrij straightforward. Gewoon een kwestie van alle referenties naar fread() en feof() en vergelijkbare FILE functies opzoeken en die vervangen met je eigen alternatieve functies die werken op een char buffer ipv een FILE.

[ Voor 83% gewijzigd door .oisyn op 23-09-2010 11:34 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11:51
Er is een setbuf( FILE*, char* ) maar ik heb geen idee of je daarmee kunt bereiken wat je wilt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Elijan9
  • Registratie: Februari 2004
  • Laatst online: 20-09 18:03
Ik weet niet waarop/waarvoor je ontwikkeld, maar mocht je op Linux (glibc) ontwikkelen dan kun je "fmemopen" gebruiken, maar die is niet standaard en zul je dus ook niet kunnen vinden op Windows. Ik heb wel eens geprobeerd deze te porten naar Windows, maar de FILE struct is daar dusdanig anders opgebouwd, dat dat niet ging lukken zonder ook fwrite en fread grondig aan te pakken...

War is when the young and stupid are tricked by the old and bitter into killing each other. - Niko Bellic