Philips MSX 2 | NMS 8250 | 2 disk drives | 2 cartridge sloten | 256 Kb RAM | toetsenbord | TV connection | 3,58 MHz | geen hard disk |
Veel OS-en zijn zo gebouwd dat ze de files van voor naar achter efficienter kunnen doornemen dan van achter naar voren.
Maar de pointer kan je in principe met de functie fseek terugzetten.
Nadeel is dat het alleen niet echt met regels, maar met posities werkt.
Maar de pointer kan je in principe met de functie fseek terugzetten.
Nadeel is dat het alleen niet echt met regels, maar met posities werkt.
Dit kan best lastig zijn. Je moet namelijk weten vanaf welke byte positie je moet gaan lezen. Je zou eraan kunnen denken om een aparte index file bij te gaan houden met byte posities.
Als je weet op welke byte positie de laatste 10 regels beginnen kun je vanaf die positie tot het eind gaan lezen. Dan zou je met www.php.net/fseek aan de gang moeten gaan.
Als je weet op welke byte positie de laatste 10 regels beginnen kun je vanaf die positie tot het eind gaan lezen. Dan zou je met www.php.net/fseek aan de gang moeten gaan.
It’s nice to be important but it’s more important to be nice
Is het misschien niet makkelijker om met 2 tekstfiles te werken, eentje met alle regels en eentje waar je de laatste 10 in hebt staan?
Dus elke keer als iemand ietsss post in beide files het erbij zetten en in de 2e file de 1e regel weghalen en bij het lezen dus alleen de volledige 2e file uitlezen
Dus elke keer als iemand ietsss post in beide files het erbij zetten en in de 2e file de 1e regel weghalen en bij het lezen dus alleen de volledige 2e file uitlezen
Hartelijk dank, ik zal eens in de fseek() duiken.
Rest mij nog wel de vraag; als ik een file open in append mode, leest ie dan de hele file in en zet ie de pointer op de laatste regel of opent ie de file en zet ie de pointer automatisch al op de laatste regel?
Ook verdere suggesties zijn natuurlijk welkom.
Rest mij nog wel de vraag; als ik een file open in append mode, leest ie dan de hele file in en zet ie de pointer op de laatste regel of opent ie de file en zet ie de pointer automatisch al op de laatste regel?
Ook verdere suggesties zijn natuurlijk welkom.
Philips MSX 2 | NMS 8250 | 2 disk drives | 2 cartridge sloten | 256 Kb RAM | toetsenbord | TV connection | 3,58 MHz | geen hard disk |
Wat je evt wel kan doen is een keertje kijken hoe lang je regels gemiddeld zijn, dat hoef je maar eenmalig te doen of gewoon te schatten.
Vervolgens ga je steeds dat getal aan karakter-posities terug en het deel dat je teruggestapt bent lees je in met een fread (die dus max die stap aan tekens inleest) en check je of er een newline teken ("\n", niet '\n') in zat, als je dan 11x een newline teken tegen gekomen bent kan je dat loopje stoppen en de boel afdrukken.
De manier van BrZ is waarsch iets makkelijker
Vervolgens ga je steeds dat getal aan karakter-posities terug en het deel dat je teruggestapt bent lees je in met een fread (die dus max die stap aan tekens inleest) en check je of er een newline teken ("\n", niet '\n') in zat, als je dan 11x een newline teken tegen gekomen bent kan je dat loopje stoppen en de boel afdrukken.
De manier van BrZ is waarsch iets makkelijker
Ik weet niet op wat voor systeem dit draait maar als het onder linux is kan je ook met ( ik geloof dat het zoiets was )
system("tail bestand.txt");
de laatste tien regels laten zien
system("tail bestand.txt");
de laatste tien regels laten zien
In principe werkt dat, ware het niet dat hij juist wil voorkomen dat de hele file wordt ingelezen. En tail doet dat volgens mij. Correct me if i'm wrongsatyriasis schreef op 17 March 2003 @ 00:46:
Ik weet niet op wat voor systeem dit draait maar als het onder linux is kan je ook met ( ik geloof dat het zoiets was )
system("tail bestand.txt");
de laatste tien regels laten zien
Tail leest, bij mijn weten, niet de hele file in. Maar doet het iig behoorlijk efficient, als het dat wel doet.
In dat geval heb ik niets gezegdACM schreef op 17 maart 2003 @ 12:00:
Tail leest, bij mijn weten, niet de hele file in. Maar doet het iig behoorlijk efficient, als het dat wel doet.
Pagina: 1