Енгізу және шығару


Си тілінің стандатында енгізу шығару ортасы жоқ. Барлық енгізу шығару операциялары Си нақты программалу жүйесіндегі ,  Си тілінің  библеотекасында орналасқан функциялардың көмегімен шығарылады. UNIX жүйесін құруда қолданылған и тілінің ерекшелігі алдын ла жоспарланған файл құрылымдарының жоқ болуы. Барлық файлдар байттардың құрылымсыз тізбектілігі ретінде қарастырылады. Бұндай жағдайда, фйлдарды ұйымдастыру үшін файл ұғымы мен түрлі құрылғылар  ұғымы қолданылады. UNIX нақты құрылғысына арнайы файл деп аталатын  құрылғы сәйкес келеді.

Си тілінің кітапханасы енгізу және шығарудың үш дәрежесі бар:

  • Ағымдық енгізу шығару,
  • Төменгі дәрежелі,
  • консолдар мен  порттарға арналған енгізу шығару.

Ағымдық енгізу шығару дәрежесінде ақпарат алмасу байттік түрде. Бұндай енгізушығару байттік алмасу құрылғыларымен қатар(баспа құралы, дисплей), ішкі жад құралы қабықшалық алмасу құралы болып табылса да, дискідегі файлдарда да мүмкін, яғни, құрылғығы бір рет рұқсат алғанда фиксирленген берілгендер позициясын оқу немесе жазу орындалады. Көбінесе, ішкі жадымен алмасушы берілгендердің минималды позициясы 512 байттан немесе 1024 байттан тұратын блоктар болып табылады. Дискіден енгізген (файлдан оқыған) кезде берілгендер операциялық жүйенің буферіне орналасады, одан кейін байттік немесе анықталған порциялармен қолданушының программасына беріледі. Берілгендерді файлға шығару кезінде олар буферде жиналады, буфер толып кетсе, бір блок ретінде соңғыға рұқсат алған дискіге  жазылады. Операциялық жүйенің буфері негізгі жадының аумаы ретінде  жүзеге асады. Сондықтан, буферлер мен программалар арасындағы енгізу – шығару сілтемелері физикалық құрылғыларға қааанда жылдам жүреді.

Лекпен жұмыс істегенде келесі әрекеттерді жүзеге асыруға болады:

  •  лектерді ашу және жабу (нұсқаушыларды нақты файлдары бар лектермен байланыстыру);
  • жолдарды, символды, форматталған берілгендерді, туынды ұзындықты берілгендер порциясын енгізіп шығаруға болады;
  •  лекті енгізу – шығарудың қателерін және лектің соңына жету (файлдың соңына) шарттарын талдау;
  •  лектің буфферленуін және буфердің өлшемін басқару;
  •  нұсқаушыны (индекаторды) лектегі ағымдағы позицияға орналастыру және алу.

Си тілінің библеотекасының енгізу – шығару функцияларын  қолдану үшін, енгізу – шығару функцияларының прототипінен, сонымен қатар  тұрақтыларды, типтерді және құрылымдарды, лекпен алмасуға қажетті функцияларды  сипаттаудан тұратын  stdio.h (#include <stdio.h>) тақырыптық файлын іске қосу керек.