X Files - Wydział Chemii UJ

Transkrypt

X Files - Wydział Chemii UJ
X Files
Operacje na plikach. Funkcje operujace
na napisach.
,
Marcin Makowski
Zaklad Chemii Teoretycznej UJ
15 stycznia 2007
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
1
I/O dla plików
2
Funkcje operujace
na napisach
,
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Powtórka
fopen, fclose
fprintf, fscanf
getc, putc,ungetc
fgetc i fputc maja, identyczny interfejs(sygnature)
, i funkcjonalność
co getc i putc. Pierwsza z par jest zwykle realizowana jako funkcje,
druga jako makra - co może dać lepsza, wydajność.
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Operacje na liniach tekstu - fgets, fputs
c h a r * f g e t s ( c h a r * l i n e , i n t m a x l i n e , FILE * s t r e a m ) ;
i n t f p u t s ( c o n s t c h a r * l i n e , FILE * s t r e a m ) ;
fgets czyta co najwyżej n - 1 znaków ze strumienia stream do
tablicy line. Czytanie jest przerywane w momencie napotkania
znaku nowej linii - znak ten jest również przepisywany do
tablicy. Do ciagu
przepisywanego do tablicy dokladany jest na
,
koniec znak pusty. Funkcja zwraca line lub NULL (w
przypadku bledu)
,
fputs wypisuje tekst (do znaku pustego) z tablicy line do
strumienia stream. Wypisywany tekst nie musi zawierać znaku
nowej linii. Funkcja zwraca 0 lub EOF (w przypadku bledu)
,
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Operacje na liniach tekstu - gets, puts
char* gets ( char* l i n e ) ;
i n t puts ( const char* l i n e ) ;
gets wczytuje z stdin linie,
ac
, zastepuj
,
, znak nowej linii znakiem
pustym. Zwraca line lub NULL
puts wypisuje napis line na stdout, dodajac
, znak nowej linii.
Zwraca 0 lub EOF
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Obsluga bledów
,
i n t f e r r o r ( FILE * s t r e a m ) ;
i n t f e o f ( FILE * s t r e a m ) ;
ferror zwraca wynik różny od 0, gdy dla stream ustawiony jest
znacznik bledu
,
feof zwraca wynik różny od 0, gdy dla stream ustawiony jest
znacznik końca pliku
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Bezpośrednie wejście/wyjście
size t
size t
f r e a d ( v o i d * p t r , s i z e t s , s i z e t n o b j , FILE * s t r e a m ) ;
f w r i t e ( v o i d * p t r , s i z e t s , s i z e t n o b j , FILE * s t r e a m ) ;
fread wczytuje ze strumienia stream do tablicy ptr co najwyżej
nobj obiektów o rozmiarze size każdy. Funkcja zwraca liczbe,
przeczytanych obiektów. Bledy
można wykryć za pomoca,
,
ferror, feof
fwrite wypisuje do strumienia stream z tablicy ptr nobj
obiektów o rozmiarze size każdy. Funkcja zwraca liczbe,
wypisanych obiektów. W przypadku bledu
zwracany wynik
,
bedzie
mniejszy
od
nobj
,
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Pozycjonowanie
i n t f s e e k ( FILE * s t r e a m , l o n g o f f s e t , i n t
i n t f t e l l ( FILE * s t r e a m ) ;
v o i d r e w i n d ( FILE * s t r e a m ) ;
origin );
fseek ustawia pozycje, w strumieniu stream na offset znaków
od origin. W przypadku bledu
funkcja zwraca wartość różna,
,
od 0. Możliwe wartości origin to:
SEEK SET (poczatek)
,
SEEK CUR (bieżaca
pozycja)
,
SEEK END (koniec)
ftell zwraca wartość bieżacej
pozycji w strumieniu lub -1 w
,
przypadku bledu
,
rewind ustawia pozycje, na poczatek
strumienia i resetuje
,
znaczniki bledu
i końca pliku
,
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Drobiazgi
i n t f f l u s h ( FILE * s t r e a m ) ;
i n t s e t v b u f ( FILE * s t r e a m , c h a r
* buf , i n t mode , s i z e t s i z e ) ;
fflush wymusza wypisanie danych z buforów wyjściowych
zwiazanych
ze strumieniem stream. Zwraca 0 lub EOF (w
,
przypadku bledu)
,
setvbuf zwiazuje
ze strumieniem stream bufor o rozmiarze size
,
wskazywany przez buf. Użycie bufora odbywa sie, w trybie
mode. Jeżeli wskaźnikiem na bufor jest NULL, to zostanie
przyznana odpowiednia ilość pamieci.
Możliwe tryby (mode):
,
IOFBF: pelne buforowanie
IOLBF: buforowanie wierszy pliku tekstowego
IONBF: brak buforowania
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Administracja plikami
i n t remove ( c o n s t c h a r
i n t rename ( c o n s t c h a r
FILE * t m p f i l e ( v o i d ) ;
*filename );
* oldname , c o n s t c h a r * newname ) ;
remove usuwa plik o nazwie zadanej napisem, w przypadku
bledu
zwraca wynik różny od 0
,
rename zmienia nazwe, pliku z zadanej napisem oldname na
zadana, napisem newname, w przypadku bledu
zwraca wynik
,
różny od 0
tmpfile tworzy tymczasowy plik binarny otwarty do zapisu.
Plik ten jest usuwany po zamknieciu.
Funkcja zwraca
,
strumień lub NULL (w przypadku bledu)
,
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Kopiowanie, konkatenacja
char*
char*
char*
char*
s t r c p y ( char *dest ,
strncpy ( char *dest
s t r c a t ( char *dest ,
s t r n c a t ( char *dest
const char* s r c ) ;
, const char* src ,
const char* s r c ) ;
, const char* src ,
size t n);
size t n);
strcpy kopiuje napis src na dest lacznie
z końcowym znakiem
,
pustym i zwraca oryginalne dest
strncpy kopiuje n-pierwszych znaków. Jeşli src jest krótszy niż
n dest jest dopelniany znakami pustymi
strcat dokleja src na koniec dest przesuwajac
, odpowiednio
końcowy znak pusty
strncat dokleja najwyżej n znaków z src na koniec dest
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Porównywanie, wyznaczanie dlugości
i n t s t r c m p ( c o n s t c h a r * s1 , c o n s t c h a r * s 2 ) ;
i n t s t r n c m p ( c o n s t c h a r * s1 , c o n s t c h a r * s2 ,
s i z e t s t r l e n ( const char *s ) ;
size t n);
strcmp porównuje napisy s1 i s2 i zwraca:
0, jeśli sa, identyczne
liczbe, dodatnia,, jeśli s1 jest leksykograficznie wiekszy
,
liczbe, ujemna,, jeśli s2 jest leksykograficznie wiekszy
,
strncmp przeprowadza porównanie n pierwszych znaków
strlen zwraca dlugość napisu, nie wliczajac
, znaku pustego
Marcin Makowski
X Files
Plan
I/O dla plików
Funkcje operujace
na
napisach
,
Wyszukiwanie znaków, podciagów
,
c h a r * s t r c h r ( c o n s t c h a r *s , i n t c ) ;
c h a r * s t r r c h r ( c o n s t c h a r *s , i n t c ) ;
c h a r * s t r s t r ( c o n s t c h a r * s1 , c o n s t c h a r
*s2 ) ;
strchr zwraca wskaźnik do pierwszego wystapienia
c w s lub
,
NULL
strrchr zwraca wskaźnik do ostatniego wystapienia
c w s lub
,
NULL
strchr zwraca wskaźnik do pierwszego wystapienia
napisu s1 w
,
s2 lub NULL
Marcin Makowski
X Files