Path: utzoo!attcan!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!hp4nl!dnlunx!freyr!belt From: belt@freyr.pttrnl.nl (Evert van de Belt) Newsgroups: comp.lang.pascal Subject: Re: Difference between READ and READLN Message-ID: Date: 21 Dec 90 09:48:51 GMT References: <25325@adm.brl.mil> Sender: news@dnlunx.pttrnl.nl Lines: 61 JBERTELO%RKC.UFSIA.AC.BE@cunyvm.cuny.edu ( Johan Berteloot) writes: >Hi, >Somebody asked to collect difficult items for Turbo Pascal. Well I have >one : the difference between READ and READLN. I never found out what is >the real difference between them and so I usually try both to see what >gives the best result (mostly READLN does). >Could somebody explain this to me ?? Probeer eens het volgende op een invoerfiletje van twee integers achter elkaar, bijv. 123 456. program test(invoer); var invoer:text; i,j : integer; begin assign(invoer,''); reset(invoer); read(invoer,i); read(invoer,j); \* Dit werkt *\ reset(invoer); read(invoer,i,j); \* Dit werkt ook *\ reset(invoer); readln(invoer,i,j); \* Ook geen probleem *\ reset(invoer); readln(invoer,i); readln(invoer,j); \* Hier loopt het mis, de vorige readln had alles *\ \* van de regel gelezen, en alleen de eerste integer *\ \* aan i toegekend, daarna is de pointer in de file *\ \* naar de volgende regel gezet. Hierop staat geen *\ \* integer meer, en zal het programma crashen *\ end. Dit illustreerd het verschil tussen read en readline wel aardig. Om het nu precieser te stellen: read(var1, var2, ..., varn) leest de benodigde waarden voor var1 t/m varn van een regel (vooropgesteld dat de invoer correct is), en laat de pointer in de file dan naar de plaats direct achter de waarde wijzen die in varn is ingelezen wijzen. Staan er nog meer waardes achter, dan kunnen deze gewoon gelezen worden. readln(...) doet hetzelfde, echter de rest van de regel wordt overgeslagen en als er weer gelezen wordt, dan zullen de waardes van de volgende regel komen. Succes ermee, Evert. A A A A