Тәттібеков Қ. С. Раимбаева С.Ә. С/С++ тілінде программалау негіздері



Pdf көрінісі
бет73/79
Дата15.11.2023
өлшемі1,39 Mb.
#124059
түріПрограмма
1   ...   69   70   71   72   73   74   75   76   ...   79
Байланысты:
С,С тілінде программалау негіздері

 
8.2 Лекті ашу және жабу
 
Лекпен жұмыс жасауды бастамас бұрын, оны инициялизациялау керек, 
яғни ашу керек. Сонда лек орындалатын программада
 FILE
типті алдын ала 
анықталған құрылыммен байланысады. 
FILE
құрылымдық типінің 
сипатталуы 
stdio.h
тақырыптық файлында орналасқан.
FILE 
құрылымында лекпен жұмыс жасуға арналған компонентер 
орналасқан, дербес жағдайда, буферге нұсқаушы, лектегі ағымдағы 
позициядағы нұсқаушы(индикатор) және басқа ақпарат.
Лекті ашқанда программада
FILE
құрылымдық типті обьектіне
нұсқаушысы болып табылатын, лекке нұсқаушы қайтып оралады. Бұл 
нұсқаушы лекті қалған басқа операцияларда идентификациялайды. 
 
Лекке нұсқаушы, мысалы, fp, программада келесі түрде жариялануы 
керек: 
#include  
FILE *fp; 
Лекке нұсқаушы лекті ашу функциясының орындалуы нәтижесінде: 
fp = fopen 
(файл _аты,ашылу- режим);
файл _аты 
және 
ашылу - режим
параметрлері лекпен байланысты және 
режимдер жолымен байланысты файл атынан тұратын символдар массивіне 
нұсқаушы болып табылды. Бірақ, бұл параметрлер файлды ашу функциясын 
шақырғанда жол түрінде және берілуі мүмкін: 


112 
fp = fopen("t.txt", "r") ; 
мұндағы t. txt – лекпен байланысты қандай да бір файл аты; 

– 
файлмен жұмыс режимдерінің бір белгіленуі (лекке рұқсат алу типі). 
Лекпен байланысты, стандартты файлды келесі алты режимнің 
біреуімен ашуға болады: 
"w"
– жаңа мәтіндік файлы жазу үшін ашылады. Егер файл бар болған 
болса, онда алдыңғы мазмұны тазаланып, жаңадан қайта құрылады; 
"r"
– бар мәтіндік файл оқу үшін ғана ашылады; 
"а"
– мәтіндік файл оған жаңа ақпарат қосу үшін (файл соңына) 
ашылады (немесе егер файл жоқ болса, құрылады). V режиміне қарағанда "а" 
режимі бар файлдарды олардың алдындағы версияларын жоймай ашады 
және оған ары қарай жазуға болады; 
"w+"
– жаңа мәтіндік файл жазу үшін және ары қарай бірнеше рет 
қолдану үшін ашылады. Егер файл бар болса, онда оның мазмұны тазарады. 
Файлдардың келесі ашылуы жазу мен одан оқу файлдың кез келген жерінде 
рұқсат етілген, сонымен қатар файлдың соңына да жазу қосуға болады, яғни, 
файл көлемі үлкейе алады; 
"r+"
– бар мәтіндік файл оқу үшін де жіне файлдың кез келген жеріне 
жазу үшін де ашылады. Бірақ, бұл режимде файлдың соңына жазу мүмкін 
емес, яғни, файл өлшемін кеңейту мүмкін емес; 
"а+"
– мәтіндік файл өзгертуге болатындай ашылады немесе құрылады 
(егер ол жоқ болса) яғни, кез келген жерден оқу мен жазу мүмкін 
болатындай; Сонымен қатар "w+" режиміне қарағанда бар файлды оның 
мазмұнын жоймай ашу мүмкін; "г+" режиміне қарағанда "а+" режимінде 
файл соңына жазу енгізуге болады, яғни, оның көлемін өзгертуге болады. 
Лекті мәтіндік немесе екілік(бинарлық) режимде ашуға болады. 
Мәтіндік режимде лектен оқылған символдар комбинациясы CR (13 
мәні ) және LF (10 мәні), яғни, " каретканы қайтару" және "жолды 
тасымалдау" басқарушы кодтары жаңа жолдың бір символына '\n' (LF) , CR 
және LF кезектілігін ауыстыру арқылы түрленеді. 
Егер лекпен байланысты файл мәтіндік емес, өзіндік екілік ақпараттан 
тұрса, онда көрсетілген түрлендірулер керек емес және зиянды болуы да 
мүмкін. Мұндай түрлендірусіз алмасу b әрпімен белгіленетін, екілік немесе 
бинарлық режимде орындалады. Мысалы, "r+b" немесе "wb". Кейбір 
компиляторларда мәтіндік файл t әрпімен белгіленеді, яғни, "a+t" немесе "rt" 
түрінде жазылады. 
Егер лек өзгерту үшін ашылған болса, яғни, режим параметрінде "+", 
символы бар болса, онда лекке шығарумен қатар одан оқу да мүмкін. Бірақ, 
режимді ауыстыру (оқудан жазуға өту немесе керісінше) лек нұсқаушысын 
керекті позицияға орналасырғаннан кейін ғана орындалуы керек. 
Лекті ашуда келесідей қателер пайда болуы мүмкін: лекпен байланысқан 
нұсқалған файл табылған жоқ (оқу режимі үшін); диск бос емес немесе 
дискіге жазуға рұқсат жоқ және т.б. 
fopen(
) функциясының орындалуы 


113 
кезінде динамикалық жадының бөлінуі орындалатынын ескерте кету керек. 
Ол жоқ болған жағдайда "Not enough memory" (жадыда орын жоқ) қате 
белгісі шығады. Аталған жағдайларда, лекке нұсқаушы 
NULL 
мәніне ие 
болады. 
Лекпен байланысқан файлдарды ашуда қолданылатын операторлар 
кезектілігіне мысал келтірейік: 


Достарыңызбен бөлісу:
1   ...   69   70   71   72   73   74   75   76   ...   79




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет