Ero sivun ”EOF” versioiden välillä

Siirry navigaatioon Siirry hakuun
1 015 merkkiä lisätty ,  17. helmikuuta 2010
laajennettu
pEi muokkausyhteenvetoa
(laajennettu)
Rivi 1: Rivi 1:
'''EOF''' eli '''loppumerkki''' on C-ohjelmoinnissa ja yleisesti Unix-järjestelmissä tiedoston lopusta kertova merkki. Kun ohjelma lukee tiedostosta loppumerkin EOF, se tarkoittaa yleensä, että tiedoston loppu on saavutettu, eikä lisää tietoa ole enää saatavilla.
'''EOF''' eli '''loppumerkki''' on C-ohjelmoinnissa ja yleisesti Unix-järjestelmissä tiedoston lopusta kertova erikoismerkki. Kun ohjelma lukee tiedostosta loppumerkin EOF, se tarkoittaa yleensä, että tiedoston loppu on saavutettu, eikä lisää tietoa ole enää saatavilla.


== C-ohjelmoinnissa ==
== C-ohjelmoinnissa ==
C-ohjelman kannalta tiedostot näkyvät [[tiedostokuvain|tiedostokuvaimina]] (engl. ''file descriptor''). Tiedostokuvaimesta, joka yleensä on liitetty tiedostoon, mutta voi olla liitetty myös johonkin [[standardivirta]]an tai [[putki|putkeen]], voi lukea tavuja standardikirjaston kutsulla ''fgetc()''. Kutsu palauttaa normaalisti tiedoston seuraavan 8-bittisen merkin, mutta mikäli tiedosto on lopussa tai lukemisessa tapahtuu virhe, kutsu palauttaa erikoisarvon EOF. EOF ei ole positiivinen 8-bittinen kokonaisluku (s.o. luku väliltä 0-255), vaan negatiivinen ''int'' -arvo. Näin mikään tiedosto ei voi sisältää merkkiä EOF, eikä sitä voi tallettaa tyyppiin ''unsigned char''. Siksi paluuarvo EOF on aina erikoistapaus.
C-ohjelman kannalta tiedostot näkyvät [[tiedostokuvain|tiedostokuvaimina]] (engl. ''file descriptor''). Tiedostokuvaimesta, joka yleensä on liitetty tiedostoon, mutta voi olla liitetty myös johonkin [[standardivirta]]an tai [[putki|putkeen]], voi lukea tavuja standardikirjaston kutsulla ''fgetc()''. Kutsu palauttaa normaalisti tiedoston seuraavan 8-bittisen merkin, mutta mikäli tiedosto on lopussa tai lukemisessa tapahtuu virhe, kutsu palauttaa erikoisarvon EOF. EOF ei ole positiivinen 8-bittinen kokonaisluku (s.o. luku väliltä 0-255), vaan negatiivinen ''int'' -arvo. Näin mikään tiedosto ei voi sisältää merkkiä EOF, eikä sitä voi tallettaa tyyppiin ''unsigned char''. Siksi paluuarvo EOF on aina erikoistapaus.


C-ohjelman tulee aina erikseen varmistaa, merkitseekö EOF -paluuarvo todella tiedoston loppua vai virhetilannetta kutsulla ''feof()'' tai ''ferror()''.
C-ohjelman tulee aina erikseen varmistaa, merkitseekö EOF -paluuarvo todella tiedoston loppua vaiko virhetilannetta kutsulla ''feof()'' tai ''ferror()''.
 
== ASCII-loppumerkki 0x04 ==
Loppumerkkiä läheisesti muistuttaa ASCII-merkki 0x04 (End of Transmission). Vanhoissa järjestelmissä, kuten [[wikipedia:fi:CP/M|CP/M]] järjestelmä talletti jokaisen tiedoston osalta vain sille varattujen talletuslohkojen määrän. Mikäli tiedostoon tallennettu data loppui talletuslohkojen välissä, tiedoston lopusta kertoi erikoismerkki 0x04. Tälläinen tiedosto ei voi tietenkään sisältää muuaalla kontrollimerkkiä 0x04, joka aiheuttaisi vakavia ongelmia nykyisissä järjestelmissä, joiden levyille saatetaan tallettaa mm. salattua tai pakattua binääritietoa. Siksi termillä EOF viitataan nykyisin Linux- ja Unix järjestelmissä useimmiten negatiiviseen lukufunktion paluuarvoon EOF, joka ei voi vastata arvoltaan mitään aitoa merkkiä, esimerkiksi ASCII-kontrollimerkkiä.
 
== Terminaalissa ==
Syötteen voi terminaalissa lopettaa antamalla erikoismerkin <tt>^D</tt>, joka PC-järjestelmissä tapahtuu painamalla Ctrl ja D kirjaimia samaan aikaan.


[[Luokka:Järjestelmä]]
[[Luokka:Järjestelmä]]
150

muokkausta

Navigointivalikko