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