Programiranje u C-u

  

Rad sa datotekama korištenjem open(), read(), write() i close()
Prethodni primjeri rada s datotekama rade sa  File Control Blocks (FCB). Pod MSDOS v3.x (ili veći) i UNIX sustavima, pri rukovanju datotekama se češće koriste handleri, a ne kontrolni blokovi datoteka.

Pisanje programa korištenjem handlera omogućava prenosivost izvornog koda između različitih operativnih sustava. Uporaba handlera dozvoljava programeru da tretira datoteku kao tok znakova.


open()

        #include <fcntl.h>
        int  open(  char  *filename,  int  access,  int  permission  );
Dozvoljeni modovi pristupa datotekama su
        O_RDONLY                O_WRONLY                O_RDWR
        O_APPEND                O_BINARY                O_TEXT
Dozvoljeni rad je 
        S_IWRITE        S_IREAD S_IWRITE | S_IREAD
open() funkcija vraća  integer vrijednost, koja se odnosi na datoteku. Ako je neuspješan pristup, vraća se -1, i postavlja se  globalna varijabla errno da pokazuje na tip pogreške.

read()

        #include  <fcntl.h>
       int  read(  int  handle,  void  *buffer,  int  nbyte );
read() funkcija pokušava pročitati n bytova iz datoteke na koju pokazuje handler, i smješta pročitane znakove u buffer. Ako se datoteka otvori korištenjem O_TEXT, ona pomiče povrat prijenosa (carriage return) i detektira kraj datoteke.

Funkcija vraća broj pročitanih bytova. Za end-of-file, vraća 0, za pogrešku  -1, postavljajući errno da pokazuje tip pogreške koja se dogodila.


write()

        #include  <fcntl.h>
        int  write(  int  handle,  void  *buffer,  int  nbyte  );
write() funkcija pokušava napisati n bytova iz buffer u datoteku na koju je povezan handler. U tekst datotekama, proširuje svakiLF u CR/LF.

Funkcija vraća broj bytova napisanih u datoteci. Vraćena vrijednost -1 pokazuje pogrešku, te je errno ispravno postavljen.


close()

        #include  <fcntl.h>
        int  close(  int  handle  );
close() funkcija zatvara datoteku na koju je povezan handler. Funkcija vraća 0 ako je uspješno zatvorila, -1 indicira pogrešku, te je errno ispravno postavljen.

©Copyright B Brown. 1984-1998. All rights reserved.