next up previous contents
Elõre: Alacsony szintû I/O Fel: C programozás a BORLAND Vissza: Függvényekre mutató pointerek

Bevitel és kivitel

Bár maga a C nyelv definiciója az eddig leírtakon kívül lényegében nem tartalmaz egyebet, maga a szabvány definiál ún. standard könyvtárakat, illetve standrd könyvtári függvényeket. Ezek olyan elõredefiniált makrók, illetve lefordított és tárgykódú könyvtárakba szervezett függvények, amelyek majdnem minden C, vagy C++ rendszerben megtalálhatók, és hívási módjuk, illetve deklarációjuk az ANSI szabványnak megfelel. A következõkben a be- és kimenetet megvalósító szabványos függvények alapelveit, illtve a függvények közül néhányat tekintünk át. (Maguk a függvénydeklarációk, illetve a kapcsolódó makródefiniciók szabványos include file-okban találhatók.)

Ezek a függvények - a UNIX filozófiáját átvéve - eszközfüggetlenek, tehát egy program mindig úgy tekintheti az adatátvitel, hogy file-ból olvas és file-ba ír, jóllehet egy konkrét alkalmazásnál a program bemenete valójában többnyire a terminál billentyûzete, kimenete pedig a tarminál képernyõje, vagy egy nyomtató. A másik általános alapelv, hogy az adatátvitel egysége a byte, és a file-ok hossza is byte-ban meghatározott. A C nyelvben a byte, mint fogalom nem létezik, ezért itt char használandó. A be- és kivitel tárgyalását két fõ csoportba oszthatjuk: az alacsony szintû (low-level) és a folyam jellegû (stream) adatátvitelre.

A C-ben a file-ok kezelésének az MS-DOS operációs rendszer alatt kétféle módja van. Ennek az az oka, hogy a C nyelvben definiált '\n' újsor karakternek az operációs rendszerben a CR-LF karakterpáros felel meg. Azért, hogy szövegfile-okat portábilis módon olvashassunk, a megfelelõ C rutinok elvégzik a szükséges konverziókat, eltüntetve számunkra ezt a rendszersajátosságot. Ha viszont bináris adatokat kezelünk, akkor a fenti konverzió összekeveri és elrontja azokat. Ezért minden file-hoz hozzá kell rendelni egy kezelési módot megnyitáskor, ha ezt nem tesszük meg, az alapértelmezés általában a szöveges, konverziós üzemmód, de ez beállítható binárisra is. Az elõre megnyitott standard állományok kezelési módja szöveges. A file kezelési módja független attól, hogy alacsony szintû, vagy folyam jellegû függvényekkel manipuláljuk.