Рад са текстуалним датотекама

Текстуалне датотеке су, у суштини, низови знакова. Сваки низ знакова у програмском језику C назива се стринг, а о стринговима сам већ писала:

Стрингови (програмски језик C)
Операције са стринговима
Функције за рад са стринговима
Показивачи и стрингови – неколико решених примера
C стрингови – решени примери

Пренос знакова

Функцијама за пренос знакова врши се читање или писање појединачних знакова или низова знакова без конверзије.

int fgetc (FILE *dat);
int getchar (void);

Ове функције читају један знак из датотеке dat (fgetc) односно преко главног улаза (getchar).
Вредност обе функције је код прочитаног знака, односно симболичка константа EOF у случају наиласка на крај датотеке, или у случају откривања грешке у току читања.

int fputc (int zn, FILE *dat);
int putchar (int zn);

Ове функиције уписују један знак zn у датотеку dat (fputc) односно исписују преко главног излаза (putchar).
Вредност обе функције је код исписаног знака, односно симболичка константа EOF у случају откривања грешке у току писања.

char *fgets (char *tekst, int n, FILE *dat);
char * gets (char *tekst);

Ове функције читају текст до краја реда, у низ знакова tekst из датотеке dat (fgets), односно преко главног улаза (gets). Функција fgets завршава читање када прочита n-1 знак, или када прочита знак за крај реда ‘\n’ и иза прочитаних знакова дода завршни знак ‘\0′ стварајући на тај начин стринг! Функција gets увек чита све знакове до знака ‘\n’ којег не ставља у низ tekst већ га замењује знаком ‘\0′.
Вредност обе функције је tekst (адреса!), односно NULL у случају наиласка на крај датотеке, или у случају откривања грешке у току читања.

int fputs (const char *tekst, FILE *dat);
int puts (const char *tekst);

Ове функције уписују стринг tekst у датотеку dat (fputs) односно исписују преко главног излаза (puts) уз додавање знака за прелазак у нови ред ‘\n’ на крају текста.
Вредност обе функције је ненегативан број у случају успешног писања, односно симболичка константа EOF у случају откривања грешке у току писања.

Пренос података са конверзијом

Подсетимо се да се приликом рада са функцијама printf и scanf за дефинисање који типови података се пишу или читају користе конверзије:

улазна конверзија – као део scanf функције
излазна конверзија – као део printf функције

Укратко: за целе бројеве углавном се користи конверзија %d, за реалне бројеве %f или %lf, за појединачне знакове %c, а за стрингове %s.

Сада проширујемо појам конверзије, односно преноса података тако што укључујемо и датотеке као места извора или одредишта података:

int fprintf (FILE *dat, const char *format, arg1, arg2, …);
int printf (const char *format, arg1, arg2, …);

Ове функције врше излазну конверзију података arg1, arg2… уз примену конверзија које су дефинисане у format. Поједини аргументи могу да буду изрази за бројчане податке и појединачне знакове, односно адресни изрази за стрингове. Одредиште резултујућег низа знакова је датотека dat (fprintf) односно екран (printf)
Вредност обе функције је број знакова у резултујућем низу знакова, односно негативна вредност у случају откривања грешке у току конверзије и преноса.

int fscanf (FILE *dat, const char *format, arg1, arg2, …);
int scanf (const char *format, arg1, arg2, …);

Ове функције врше улазну конверзију података arg1, arg2… уз примену конверзија које су задате стрингом format. Поједини аргументи треба да буду адресе бројчаних или знаковних података. Извориште низа знакова који се конвертује је датотека dat (fscanf) односно тастатура (scanf)
Вредност обе функције је број конвертованих података, односно симболичка константа EOF у случају наиласка на крај датотеке, или откривара грешке пре конверзије првог податка.

Advertisements

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

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

WordPress.com лого

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

Google+ photo

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

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

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

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

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

w

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