wyklad PP pliki, Elektronika i Telekomunikacja, z PENDRIVE, Politechnika - EiT, 2011 2012 - sem 2, PODSTAWY ...
[ Pobierz całość w formacie PDF ]
Programowanie w C
Wykład 2b
Operacje we/wy - obsługa plików
Buforowanie Wejścia/Wyjścia
Bufor (
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
Opróżnienie bufora i przesłanie danych na dysk można wymusić funkcją
fflush()
int fflush(FILE *stream);
Jeśli wykonanie funkcji fflush() zakończyło się poprawnie to jest zwracana
wartość 0, w przeciwnym przypadku - wartość EOF
Wskaźniki typu FILE
Struktura FILE służy do zarządzania plikami i jest zdefiniowana w pliku
stdio.h
Wskaźnik typu FILE -
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.
typedef struct _iobuf
{
char* _ptr;
int _cnt;
char* _base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char* _tmpfname;
} FILE;
Operacje wejścia/wyjścia, strumienie, pliki
Gdy program rozpoczyna działanie otwarte są trzy standardowe strumienie
wejścia/wyjścia:
stdin - standardowe wejście (konsola - klawiatura)
stdout - standardowe wyjście (konsola - monitor)
stderr - standardowe wyjście dla komunikatow o błędach (konsola - monitor)
definicje powyższych strumieni oraz prototypy funkcji wejścia/wyjścia umieszczone
są w pliku nagłowkowym stdio.h
/*
* The three standard file pointers provided by the run time library.
* NOTE: These will go to the bit-bucket silently in GUI applications!
*/
#define STDIN_FILENO
0
#define STDOUT_FILENO
1
#define STDERR_FILENO
2
#define stdin
(&_iob[STDIN_FILENO])
#define stdout
(&_iob[STDOUT_FILENO])
#define stderr
(&_iob[STDERR_FILENO])
Warto zauważyć, że konstrukcja:
fprintf (stdout, "Hej, ja działam!") ; jest równoważna konstrukcji
printf ("Hej, ja działam!"); Podobnie jest z funkcją scanf():
fscanf (stdin, "%d", &zmienna); działa tak samo jak
scanf("%d", &zmienna);
Wszystkie operacje związane z przetwarzaniem pliku zazwyczaj
składają się z trzech części:
1
. Otwarcie pliku (strumienia):
- funkcje: fopen()
2.
Operacje na pliku (strumieniu),
np. czytanie, pisanie:
- funkcje dla plików tekstowych: fprintf(), fscanf(), fgetc(),
fputc(), fgets(), fputs()…
- funkcje dla plików binarnych: fread(), fwrite(), …
3. Zamknięcie pliku (strumienia):
- funkcja: fclose().
Każdy strumień może pracować w trybie binarnym lub
tekstowym.
[ Pobierz całość w formacie PDF ]