Отварање и затварање датотека

Показивач датотеке

За сваку датотеку која се користи у програму треба да постоји показивач на податак типа FILE. То је један структурни тип, који се наредбом typedef дефинише у заглављу <stdio.h>. Пошто идентификатор FILE има статус идентификатора типа, показивач датотеке dat може да се дефинише наредбом

FILE *dat;

У језику C постоје три унапред дефинисана глобална идентификатора типа FILE * који представљају три стандардне текстуалне датотеке које се увек аутоматски отварају на почетку извршавања програма. Ти идентификатори, односно датотеке су:

stdin – стандардни улаз. Представља тастатуру, осим ако се у команди оперативног система за извршавање програма не каже другачије, тзв. скретањем главног улаза
stdout – стандардни излаз. Представља екран, осим ако се у команди оперативног система за извршавање програма не каже другачије, тзв. скретањем главног излаза
stderr – стандардни излаз за поруке. Увек представља екран и не може да се скреће на неку датотеку. Предвиђен је за слање порука, обично о грешкама, које увек морају да се исписују на екрану, независно од тога где се исписују „обични“ подаци.

Отварање датотеке

Отварање датотеке врши се функцијом fopen чији је прототип (декларација)

FILE *fopen (const char *imedat, const char *rezim); /* подсетимо се да декларација, односно прототип функције садржи све потребне елементе који су неопходни за њено исправно коришђење: тп резултата који враћа, назив функције, типове и број параметара */

imedat је стринг који представља назив датотеке према правилима писања која се примењују у датом оперативном систему. Ако се датотека не налази у истом фолдеру у коме је програм који извршавамо као назив датотеке мора се навести цела путања до датотеке!
rezim је стринг који означава начин на који ће се користити датотека. Основни режими су:

читање из постојеће датотеке (r – read),
уписивање у нову датотеку (w – write) и
дописивање на крају постојеће или нове датотеке (a – append).

Да би ажурирање садржаја датотеке било могуће, тј. наизменично читање и писање, претходним ознакама треба додати знак +, независно који је основни режим рада. На тај начин добијају се ознаке r+, w+, a+.
Док се другачије не каже, подразумева се рад са текстуалним датотекама. За рад са бинарним датотекама треба претходним ознакама додати и слово b. Тиме се уводи још шест нових ознака: rb, wb, ab, r+b, w+b, a+b. Последње три ознаке могу да се пишу и као rb+, wb+, ab+.
Вредност функције fopen је показивач на структуру података која је придружена датотеци или NULL у случају грешке. Вредност функције треба доделити некој показивачкој променљивој. Ту променљиву треба користити при сваком приступању датотеци. Од тачке позива функције fopen у програму – уместо назива датотеке користимо ту показивачку променљиву, тако да нам та показивачка променљива, у ствари, представља датотеку!
Две типичне грешке су синтаксна грешка у називу датотеке, или непостојање датотеке при отварању у режиму r. Посебно се скреће пажња да у случају отварања у режиму w ако датотека са наведеним називом већ постоји постојећа датотека биће уништена без опомене и почеће стварање нове, празне датотеке.

Затварање датотеке

Затварање датотеке врши се функцијом fclose чија је декларација:

int fclose (FILE *dat);

dat је показивач датотеке који је придружен датотеци која се затвара. У случају успеха, вредност функције је нула, а у случају откривања грешке симболичка константа EOF.

Завршетак програма доводи до аутоматског затварања свих отворених датотека.

Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се /  Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се /  Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се /  Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се /  Промени )

w

Повезивање са %s