biblioteki_c.pdf

(72 KB) Pobierz
w13.dvi
Biblioteki ANSI C
string.h Deklaruje funkcje do manipulowa-
nia ªa«cuchami takie, jak strcmp i
strcpy .
Standard ANSI deniuje wszystkie aspekty C: jezyk, prepro-
cesor oraz biblioteke. Prototypy funkcji bibliotecznych, jak rów-
nie» niezbedne struktury danych oraz staªych preprocesora sa
zdeniowane w standardowych zbiorach nagªówkowych. Poni»-
sza tabela zawiera zestawienie standardowych zbiorów nagªów-
kowych, wªacznie z podsumowaniem ich zawarto±ci.
time.h
Deklaruje typy danych i deniuje
funkcje do manipulowania czasem.
Deniuje typy clock t i time t oraz
strukturedanych tm
Uwaga: Identykatory zewnetrzne rozpoczynajace sieodznaku
podkre±lenia sa zarezerwowane na u»ytek biblioteki: to samo do-
tyczy wszelkich innych identykatorów rozpoczynajacych sieod
znaku podkre±lenia i wielkiej litery lub dwóch znaków podkre-
±lenia.
Wej±cie i wyj±cie: nagªówek <stdio.h>
STANDARDOWE ZBIORY NAGÓWKOWE W ANSI C
Zbiór nagªówkowy Przeznaczenie
assert.h
Operacje na plikach
Deniuje makro assert .U»ywane
do diagnostyki programu.
ctype.h
Deklaruje funkcje do klasykacji i
konwersji znaków.
FILE *fopen(const char *filename, const char *mode)
FILENAME_MAX maksimum znakow w nazwie pliku
errno.h
Deniuje makrosy dla warunków
bªedu, EDOM i ERANGE ,oraz
zmienna caªkowita errno poprzez
która funkcje biblioteczne zwra-
cajakodbªedu.
FOPEN_MAX plikow mozna jednoczesnie otworzyc
FILE *freopen(const char *filename,
const char *mode, FILE *stream)
Zwykle uzywa sie do zmiany plikow zwiazanych
ze strumieniami stdin, stdout, stderr
float.h
Deniuje zakres warto±ci, które
mogaby¢zapamietywane w typach
zmiennoprzecinkowych.
#include <stdio.h>
limits.h
Deniuje warto±ci ograniczajace
dla wszystkich danych typu caªko-
witego.
int main(void)
{
/* redirect standard output to a file */
if (freopen("OUTPUT.FIL", "w", stdout)
== NULL)
fprintf(stderr, "error redirecting stdout\n");
locale.h
Deklaruje strukture lconv i funkcje
niezbedne do przystosowania pro-
gramu w C do poszczególnych ±ro-
dowisk lokalnych.
/* this output will go to a file */
printf("This will go into a file.");
math.h
Deklaruje funkcje matematyczne
oraz makro HUGE VA L
/* close the standard output stream */
fclose(stdout);
setjmp.h
Deniuje funkcje setjmp oraz lon-
gjmp ,któ emoga przekazywa¢
kontrole z jednej funkcji do dru-
giej bez opierania sie na wywoªa-
niach i powrotach z funkcji. De-
niuje równie» typ danych jmp buf
u»ywany przez setjmp i longjmp .
return 0;
}
int fflush(FILE *stream)
int fclose(FILE *stream)
signal.h
Deniuje symbole i procedury
niezbedne dla obsªugi zdarze«
wyjatkowych.
int remove(const char *filename)
int rename(const char *oldname, consat char *newname)
stdarg.h
Deniuje makrosy, które umo»li-
wiajadostep do nienazwanych ar-
gumentów w funkcji, która akcep-
tuje zmienna liczbeargumentów.
FILE *tmpfile(void)
char *tmpnam(char s[L_tmpnam])
stddef.h
Deniuje standardowe typy danych
ptrdi t , size t , wchar t ,symbol
NULL oraz makro osetof
TMP_MAX co najwyzej tyle roznych nazw mozna
wygenerowac podczas dzialania
jednego programu
stdio.h
Deklaruje funkcje i typy da-
nych niezbedne do obsªugi ope-
racji we/wy. Deniuje ma-
krosy takie jak BUFSIZ , EOF ,
NULL , SEEK CUR , SEEK END i
SEEK SET
int setvbuf(FILE *stream, char *buf,
int mode, size_t size)
mode - mozliwe 3 wartosci:
_IOFBUF pelne buforowanie
_IOLBUF buforowanie wierszy pliku tekstowego
_IONBUF brak buforowania
Jezeli buf rowny NULL, to przydzial domyslny.
stdlib.h
Deklaruje wiele funkcji u»yteczno-
±ci takich, jak procedury konwer-
sji ªa«cuchów, generator liczb lo-
sowych, procedury alokacji pamieci
i procedury kontroli procesów (ta-
kie, jak abort , exit i system ).
#include <stdio.h>
int main(void)
{
FILE *input, *output;
8893774.042.png 8893774.043.png 8893774.044.png 8893774.045.png 8893774.001.png 8893774.002.png 8893774.003.png 8893774.004.png 8893774.005.png 8893774.006.png 8893774.007.png 8893774.008.png 8893774.009.png 8893774.010.png 8893774.011.png 8893774.012.png 8893774.013.png 8893774.014.png 8893774.015.png 8893774.016.png 8893774.017.png 8893774.018.png 8893774.019.png 8893774.020.png 8893774.021.png 8893774.022.png 8893774.023.png 8893774.024.png 8893774.025.png 8893774.026.png 8893774.027.png 8893774.028.png 8893774.029.png 8893774.030.png 8893774.031.png 8893774.032.png 8893774.033.png 8893774.034.png 8893774.035.png 8893774.036.png 8893774.037.png 8893774.038.png 8893774.039.png 8893774.040.png
char bufr[512];
int fscanf(FILE *stream, const char *format, ... )
input = fopen("file.in", "r+b");
output = fopen("file.out", "w");
int scanf(const char *format, ... )
int sscanf(char *s, const char *format, ... )
/* set up input stream for minimal disk access,
using our own character buffer */
if (setvbuf(input, bufr, _IOFBF, 512) != 0)
printf("failed to set up buffer for input "
"file\n");
Funkcje realizujace wej±cie i wyj±cie znakowe
else
printf("buffer set up for input file\n");
/* set up output stream for line buffering
using space that will be obtained through
an indirect call to malloc */
if (setvbuf(output, NULL, _IOLBF, 132) != 0)
printf("failed to set up buffer for output"
" file\n");
int fgtec(FILE *stream)
char *fgets(char *s, int n, FILE *stream)
int fputc(int c, FILE *stream)
int fputs(const char *s, FILE *stream)
else
printf("buffer set up for output file\n");
int getc(FILE *stream)
/* perform file I/O here */
/* close files */
fclose(input);
fclose(output);
return 0;
int getchar(void)
char *gets(char *s)
int putc(int c, FILE *stream)
}
int putchar(int c)
void setbuf(FILE *stream, char *buf)
Jesli buf == NULL, to buforowanie zostanie
wylaczone, w przeciwnym przypadku rownowazne
int puts(const char *s)
int ungetc(int c, FILE * stream)
(void) setvbuf(stream,_IOFBUF, BUFSIZ)
#include <stdio.h>
/* BUFSIZ is defined in stdio.h */
char outbuf[BUFSIZ];
Funkcje realizujace bezpo±rednie wej±cie i wyj±cie
int main(void)
{
size_t fread(void *ptr, size_t size, size_t nobj,
FILE *stream)
/* attach a buffer to the standard output stream */
setbuf(stdout, outbuf);
#include <string.h>
#include <stdio.h>
/* put some characters into the buffer */
puts("This is a test of buffered output.\n\n");
puts("This output will go into outbuf\n");
puts("and won't appear until the buffer\n");
puts("fills up or we flush the stream.\n");
int main(void)
{
FILE *stream;
char msg[] = "this is a test";
char buf[20];
/* flush the output buffer */
fflush(stdout);
if ((stream = fopen("DUMMY.FIL", "w+"))
== NULL)
{
return 0;
fprintf(stderr, "Cannot open output file.\n");
return 1;
}
}
Formatowane wyj±cie
/* write some data to the file */
fwrite(msg, strlen(msg)+1, 1, stream);
int fprintf(FILE *stream, const char *format, ... )
/* seek to the beginning of the file */
fseek(stream, SEEK_SET, 0);
int printf(const char *format, ... )
/* read the data and display it */
fread(buf, strlen(msg)+1, 1, stream);
printf("%s\n", buf);
int sprintf(char *s, const char *format, ... )
int vprintf(const char *format, va_list arg)
fclose(stream);
return 0;
int vfprintf(FILE *stream, const char *format,
va_list arg)
}
int vsprintf(char *s, const char *format, va_list arg)
size_t fwrite(const void *ptr, size_t size,
size_t nobj, FILE *stream)
Formatowane wej±cie
#include <stdio.h>
struct mystruct
{
int i;
char ch;
Obsªuga bªedów
};
int main(void)
{
void clearerr(FILE *stream)
Kasuje znaczniki konca pliku i bledu.
FILE *stream;
struct mystruct s;
int feof(FILE *stream)
Zwraca wartosc rozna od 0 na koncu pliku.
if ((stream = fopen("TEST.$$$", "wb")) == NULL)
/* open file TEST.$$$ */
{
int ferror(FILE *stream)
Zwraca wartosc rozna od zera, gdy blad.
fprintf(stderr, "Cannot open output file.\n");
return 1;
void perror(const char *s)
Wypisuje komunikat zwiazany z numerem errno.
}
s.i = 0;
s.ch = 'A';
fwrite(&s, sizeof(s), 1, stream);
/* write struct s to file */
fclose(stream); /* close file */
return 0;
Klasykowanie znaków: nagªówek <ctype.h>
isalnum(c) prawda jest albo isalpha(c) albo isdigit(c)
}
isalpha(c) prawda jest isupper(c) albo islower(c)
Funkcje wyznaczajace pozycje w pliku
iscntrl(c)
znak kontrolny
isdigit(c)
cyfra dziesietna
int fseek(FILE *stream, long offset, int origin)
Dla plikow binarnych:
nowa pozycja w miejscu oddalonym o offset
znakow od origin.
Wartosci origin
SEEK_SET poczatek pliku
SEEK_CUR biezaca pozycja
SEEK_END koniec pliku
isgraph(c) znak drukowalny za wyjatkiem odstepu
islower(c)
maªa litera
isprint(c)
znak drukowalny ªacznie z odstepem
ispunct(c) znak drukowalny za wyjatkiem
odstepu, liter i cyfr
isspace(c)
odstep, nowa strona, nowy wiersz,
powót karetki, tabulator, pionowy
tabulator
Dla plikow tekstowych:
offset musi byc rowny zeru
lub wartosci zwroconej przez ftell
(wowczas origin musi byc rowne SEEK_SET)
Funkcja fseek zwraca wartosc niezerowa w
przypadku bledu.
isupper(c) du»a litera
isxdigit(c) cyfra szesnastkowa
Dwie dodatkowe funkcje sªu»a do zmiany wielko±ci liter:
long ftell(FILE *stream)
zwraca wartosc biezacej pozycji dla stream
lub -1L w przypadku bledu.
int tolower(int c) zamienia c na mala litere
int toupper(int c) zamienia c na duza litere
void rewind(FILE *stream)
Wywolanie rewind jest rownowazne:
fseek(fp,0L,SEEK_SET);
clearerr(fp);
Operacje na tekstach: nagªówek <string.h>
char *strcpy(char *s, const char *ct)
Kopiuje ct do s lacznie z '\0'; zwraca s
#include <stdio.h>
int main(void)
{
char *strncpy(char *s, const char *ct, size_t n)
Kopiuje co najwyzej n znakow;
FILE *fp;
char *newname="test.txt", first;
char *strcat(char *s, const char *ct)
Dopisuje znaki z ct na koniec s; zwraca s
fp = fopen(newname,"w+");
fprintf(fp,"abcdefghijklmnopqrstuvwxyz");
rewind(fp);
fscanf(fp,"%c",&first);
printf("The first character is: %c\n",first);
fclose(fp);
remove(newname);
return 0;
int strcmp(const char *cs, const char *ct)
Porownuje znaki.
int strncmp(const char *cs, const char *ct, size_t n)
Porownuje co najwyzej n znakow.
}
char *strchr(const char *cs, char c)
zwraca wskaznik do pierwszego wystapienia c w s
lub NULL, jesli znak nie wystepuje
int fgetpos(FILE *stream, fpos_t *ptr)
int fsetpos(FILE *stream, const fpos_t *ptr)
ustawia biezaca pozycje w stream wedlug
wartosci zapamietanej przez fgetpos w
miejscu wskazywanym przez ptr
W przypadku bledu zwraca wartosc rozna od
zera
char *strrchr(const char *cs, char c)
zwraca wskaznik do ostatniego wystapienia c w s
size_t strspn(const char *cs, const char *ct)
zwraca dlugosc przedrostka w tekscie cs
skladajacego sie ze znakow wystepujacych w ct
size_t strcspn(const char *cs, const char *ct)
zwraca dlugosc przedrostka w tekscie cs sklada-
jacego sie ze znakow nie wystepujacych w ct
sin(x)
sinus x
cos(x)
cosinus x
tan(x)
tangens x
asin(x)
sin 1 ( x ) w przedziale [ 2 ; 2],
x
char *strpbrk(const char *cs, const char *ct)
zwraca wskaznik do pierwszego wystapienia w cs
jakiegos znaku z ct lub NULL, jesli takich nie ma
2
[
1 ; 1]
acos(x)
cos 1 ( x ) w przedziale [0 ; ], x 2
[
1 ; 1]
atan(x)
tan 1 ( x ) w przedziale [ 2 ; 2]
char *strstr(const char *cs, const char *ct)
zwraca wskaznik do pierwszego wystapienia tekstu ct
w cs lub NULL, jesli ct nie wystepuje w cs
atan2(y,x)
tan 1 ( yx ) w przedziale [ −; ]
sinh(x)
sinus hiperboliczny x
cosh(x)
cosinus hiperboliczny x
tanh(x)
tangens hiperboliczny x
exp(x)
funkcja wykªadnicza e x
size_t strlen(const char *cs)
log(x)
logarytm naturalny: ln(x), x> 0
log10(x)
logarytm o podstawie 10: log 10 ( x ), x> 0
char *strerror(size_t n)
zwraca wskaznik do tekstu komunikatu
odpowiadajacego bledowi o numerze n
pow(x,y)
x y (bªad zakresu, gdy x =0i y 0
lub, gdy x< 0 i y nie jest caªkowite
0
ceil(x) najmniejsza liczba caªkowita nie
mniejsza ni» x
floor(x) najwieksza liczba caªkowita nie
wieksza ni» x
fabs(x) warto±¢ bezwzgledna jxj
ldexp(x,n) x 2 n
frexp(x, int *exp) rozdziela x na znormalizowana
cze±¢ uªamkowa z przedziaªu
[1 = 2 ; 1] i wykªadnik potegi 2;
funkcja zwraca cze±¢ uªamkowa, a
wykªadnik potegi wstawia siedo
*exp
modf(x, double *ip) rozdziela x na cze±¢ caªkowitai
uªamkowa, obie z tym samym zna-
kiem, co x; cze±¢ caªkowitawsta-
wia siedo*ipizwracacze±¢ uªam-
kowa
p x , x
char *strtok(char *s, const char *ct)
wyszukuje w tekscie s ciagi znakow przedzielone
znakami z ct
Funkcje mem... sªu»a do operowania na obiektach traktowa-
nych jak tablice znakowe; z zaªo»enia maja one dziaªa¢ bardzo
sprawnie.
mod(x,y)
zmiennopozycyjna reszta z dziele-
nia x=y , z tym samym znakiem co
x
void *memcpy(void *s, const void *ct, size_t n)
Kopiuje n znakow z obiektu ct do s i zwraca s
void *memmove(void *s, const void *ct, size_t n)
Robi to samo, co memcpy, ale dziala rowniez
dla obiektow zachodzacych na siebie
int memcmp(const void *cs, const void *ct, size_t n)
porownuje poczatkowe n znakow w cp i cs;
zwraca taka sama wartosc jak strcmnp.
void *memchr(const void *cs, char c, size_t n)
zwraca wskaznik do pierwszego wystapienia c w s
lub NULL, jesli nie wystepuje.
void *memset(void *s, char c, size_t n)
wstawia c do poczatkowych n znakow s; zwraca s
Funkcje matematyczne: nagªówek <math.h>
W poni»szym zestawieniu:
x,y - typu double
n- typu int
Wszystkie funkcje zwracajawarto±¢typu double .Warto±ci
katów dla funkcji trygonometrycznych wyra»a sie w radianach.
sqrt(x)
8893774.041.png
Zgłoś jeśli naruszono regulamin