background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

1 /24

Podstawy programowania komputerów

Podstawy programowania komputerów

Wykład 9: „Operacje na plikach w ANSI C”

background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

2 /24

O

O

peracje

peracje

plikowe

plikowe

(nie obiektowo)

(nie obiektowo)

Plik - dokument lub inny zbiór danych zapisany na dysku, 
oznaczony unikatową nazwą. Plik jest ciągiem bajtów
Plik w C:

ƒ

plik dyskowy (

disk file

disk file

)

ƒ

urządzenie peryferyjne typu 

terminal

terminal

ƒ

drukarka

ƒ

plik na taśmie magnetycznej (

tape drive file

tape drive file

)

background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

3 /24

Strumień

Strumień

ƒ

Strumień (

stream

stream

) w C: przepływ danych z 

programu do pliku lub odwrotnie

ƒ

Strumień nie jest związany z konkretnym 

urządzeniem (

device

device

-

-

independend

independend

)

ƒ

Aby przeprowadzić operację Wejścia/Wyjścia, 

należy skojarzyć plik ze strumieniem

ƒ

Dwa formaty strumieni: 

text or binary stream

text or binary stream

background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

4 /24

Buforowanie Wejścia/Wyjścia

Buforowanie Wejścia/Wyjścia

ƒ

Bufor (

buffer

buffer

) - obszar pamięci służący do tymczasowego 

przechowywania danych przed przesłaniem ich do miejsca 
przeznaczenia

ƒ

Posługując się buforami system operacyjny zmniejsza 

ilość odwołań do fizycznych urządzeń Wejścia/Wyjścia

ƒ

Strumienie We/Wy są buforowane w sposób domyślny

ƒ

Fizyczny zapis do pliku -

buffer flush

buffer flush

background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

5 /24

Wskaźniki typu FILE

Wskaźniki typu FILE

ƒ

Struktura FILE służy do zarządzania plikami i jest 

zdefiniowana w pliku 

stdio.h

stdio.h

ƒ

Wskaźnik typu FILE -

file pointer

file pointer

, służy do 

odwoływania się do konkretnego pliku dyskowego.

ƒ

W obrębie struktury FILE można znaleźć: rozmiar pliku, 

znacznik pozycji w pliku , adres bufora danych itp.

background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

6 /24

Otwieranie pliku

Otwieranie pliku

ƒ

# include <stdio.h>

FILE *fopen(const char *filename, const 

char *mode);

ƒ

Jeśli operacja otwarcia pliku nie powiedzie się, funkcja zwraca 

wskaźnik pusty (

null pointer

null pointer

).

ƒ

Tryby otwarcia pliku:

tryb 

tworzy plik

a+b

ab+

ab

a+

a (append)

w+b

wb+

wb

w+

w (write)

r+b

rb+

rb

r+

r (read)

background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

7 /24

Otwieranie/zamykanie pliku

Otwieranie/zamykanie pliku

FILE *fptr;

if ((fptr = fopen(„TEST.TXT”, „r”)) 

== NULL)

{

printf(„Nie moge otworzyc pliku 

TEST.TXT.\n);

exit(1)

}

ƒ

Po wykonaniu operacji plik należy odłączyć od strumienia 

danych: 

int fclose(FILE *ptr);

ƒ

Funkcja 

fclose( )

fclose( )

wykonuje czyszczenie bufora.

background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

8 /24

Odczyt i zapis plików

Odczyt i zapis plików

fgetc( )

fgetc( )

fputc( )

fputc( )

znak-po-znaku

int fgetc(FILE *stream);
int fputc(int c, FILE *stream);

fgets( )

fgets( )

fputs( )

fputs( )

wiersz-po-wierszu

char *fgets(char *s, int n, FILE *stream);
int fputs(const char *s, FILE *stream);

fread( )

fread( )

fwrite( )

fwrite( )

blok-po-bloku

size_t fread(void *ptr, size_t size, 

size_t n, FILE *str);

size_t fwrite(const void *ptr, size_t 

size, size_t n, FILE *str);

background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

9 /24

Funkcje do obsługi plików (

Funkcje do obsługi plików (

stdio.h

stdio.h

)

)

rewind( )

rewind( )

– przewija plik do początku

ferror( )

ferror( )

– sprawdza sukces operacji na pliku

remove( )

remove( )

– usuwa  plik

rename( )

rename( )

– zmienia nazwę pliku

tmpfile( )

tmpfile( )

– otwiera plik tymczasowy

tmpname( )

tmpname( )

– generuje niepowtarzalną nazwę pliku

access( )

access( )

– sprawdza istnienie pliku w systemie

fseek( )

fseek( )

– wyszukiwanie danych w pliku

feof( )

feof( )

– wykrywa koniec pliku

background image

PP

200

5

©

Walery

Sus

łow

swalover@ie.tu.koszalin.pl

10 /24

Inne funkcje do obsługi plików

Inne funkcje do obsługi plików

ƒ

Podobne i rozszerzone funkcje obsługi pliku dostępne są 

też poprzez pliki nagłówkowe 

io.h

io.h

dos.h

dos.h

, lecz nie są one 

zdefiniowane w standardzie ANSI C.

ƒ

Użyteczne funkcje działające na katalogach z 

dir.h

dir.h

:  

chdir

chdir

( )

( )

– zmienia nazwę katalogu

mkdir

mkdir

( )

( )

– tworzy katalog

opendir

opendir

( ), closedir( )

( ), closedir( )

– otwiera i zamyka strumień 

związany z katalogiem


Document Outline