Funkcje narz¸ nagłówek Argument seed jest zarodkiem dla nowego ciagu liczb pseudolo- edziowe: ¸ Plik nagłówkowy zawiera deklaracje funkcji sowych. Pocz¸ zarodek jest równy 1. atkowy słż¸ do przeksztaÅ‚cania liczb, przydzielania pami¸ i innych acych eci przydziaÅ‚ pami¸ eci zadaÅ„. double atof(const char *s) void *calloc(size_t nobj, size_t size) rownowazna z Zwraca wskaznik do obszaru pami¸ przeznaczonego dla ta- eci strtod(s,(char **)NULL) blicy o nobj elementów, każdy o rozmiarze size. Obszar jest inicjowany zerami. int atoi(const char *s) void *malloc(size_t size) rownowazna z (int) strtol(s, (char **)NULL, 10) Obszar nie jest inicjowany. long atol(const char *s) void *realloc(void *p, sizee_t size) rownowazna z strtol(s, (char **)NULL, 10) void free(void *p) double strtod(const char *s, char **endp) void abort(void) PrzeksztaÅ‚ca pocz¸ znaki s na wartość typu double atkowe (wiod¸ znaki biaÅ‚e s¸ ignorowane). ace a Powoduje nienormalne zakoÅ„czenie programu, podobnie jak: Jeżeli endp != NULL to funkcja wstawia wskaznik do nie przeksztaÅ‚conej cz¸ tekstu s. eÅ›ci raise(SIGABRT). HUGE_VAL dla nadmiaru Zwraca: 0 dla niedomiaru void exit(status) W obu przypadkach wstawia ERANGE do zmiennej errno. Powoduje normalne zakoÅ„czenie pro- long strtol(const char *s, char **endp, int base) gramu. Funkcje zarejestrowane przez atexit s¸ wywoÅ‚ywane w kolejnoÅ›ci odwrotnej do a rejestracji, otwarte pliki s¸ aktualizowane, a otwarte strumienie a zamykane. DziaÅ‚anie podobne jak wyżej, lecz zamiana na long. Argument Od implementacji zależy, jak status jest przekazywany do Å›ro- base okreÅ›la sposób transformacji: dowiska. od 2 do 36 liczba zapisana przy tej podstawie 0 decyduje postać liczby zapisanej w s: 0 na poczatku, to podstawa 8; ¸ 0X lub 0X podstawa 16 int atexit(void (*fcn)(void)) w pozostaÅ‚ych przypadkach podstawa 10 Zwraca: LONG_MAX lub LONG_MIN w przypadku nadmiaru, a Rejestruje fukcj¸ fcn, która należy wykonać przy normalnym za- e ¸ errno otrzymuje wartość ERANGE. koÅ„czeniu programu. unsigned long strtoul int system(const char *) (const char *s, char **endp, int base) PrzykÅ‚ad: DziaÅ‚a tak samo jak strtol, wynik typu unsigned long, a w przypadku bÅ‚¸ zwraca ULONG_MAX. edu #include #include Generowanie liczb pseudolosowych int main(void) { int rand(void) printf("Za chwile uruchomimy interpreter polecen" " i polecenie systemu!\n"); system("ls -lt"); return 0; Zwraca pseudolosow¸ liczb¸ caÅ‚kowita z przedziaÅ‚u mi¸ 0 i a e ¸ edzy } RAND_MAX, która wynosi co najmniej 32767. void srand(unsigned int seed) char *getenv(const char *name) Zwraca tekst zawarty w zmiennej Å›rodowiskowej name lub NULL jeÅ›li zmienna nie istnieje. void assert(int wyrazenie) PrzykÅ‚ad: #include Makro sÅ‚użace do diagnozowania programów. JeÅ›li przy wyko- ¸ #include naniu #include #include assert(wyrazenie) #include wartość wyrazenia jest równa zeru, to makro assert wypisze int main(void) do stderr komunikat postaci: { char *path, *ptr; Assertion failed: wyrazenie, file Nazwa_pliku, line nn int i = 0; i wywoÅ‚a funkcj¸ abort w celu zakoÅ„czenia programu. e /* get the current path environment */ JeÅ›li przed wÅ‚¸ nagłówka assert.h>do pliku zródÅ‚o- aczeniem ptr = getenv("PATH"); wego zdefiniowano makro NDEBUG, to makro assert jest po- mijane. /* set up new path */ PrzykÅ‚ad: path = (char *) malloc(strlen(ptr)+15); strcpy(path,"PATH="); #include strcat(path,ptr); #include strcat(path,";c:\\temp"); #include /* replace the current path and display current environment */ struct ITEM { int key; putenv(path); while (environ[i]) int value; }; printf("%s\n",environ[i++]); return 0; /* add item to list, make sure list is not null */ void additem(struct ITEM *itemptr) { } assert(itemptr != NULL); /* add item to list */ } void *bsearch(const void *key, const void *base, size_t n, size_t size, int main(void) int (*cmp)(const void *keyval, const void *datum)) { additem(NULL); return 0; Przeglada uporz¸ a tablic¸ base[0] . . . base[n-1] zÅ‚ożon¸ ¸ adkowan¸ e a } z elementów o rozmiarze size, w poszukiwaniu elementu odpo- wiadajacemu obiektowi *key. ¸ Funkcja wskazywana przez cmp musi zwracać wartość Zmienne listy argumentów: nagłówek ujemn¸ gdy pierwszy argument (klucz szukania) jest mniejszy a, od drugiego (element tablicy), 0 , gdy równy, wartość dodatnia, ¸ Skoki odlegÅ‚e: nagłówek gdy wi¸ ekszy. Funkcja zwraca wskaznik do znalezionego elementu, albo NULL. int setjmp(jmp_buf env) void longjmp(jmp_buf env, int val) void qsort(void *base, size_t n, size_t size, int (*comp) (const void *, const void *)) SygnaÅ‚y: nagłówek Porzadkuje tablic¸ base wporzadku rosn¸ ¸ e ¸ acym. Mechanizmy obsÅ‚ugi zdarzeÅ„ wyj¸ atkowych, np. sygnałów przerwania nadesÅ‚anych z zewn¸ programu lub bÅ‚¸ w wy- atrz edu konaniu programu. int abs(int) long labs(int) void (*signal(int sig, void (*handler)(int))(int) div_t div(int num, int denom) OkreÅ›la, w jaki sposób s¸ obsÅ‚ugiwane nadchodz¸ sygnaÅ‚y. a ace JeÅ›li argument handler Ma wartość SIG_DFL, to dziaÅ‚anie do- ¸ Oblicza cz¸ caÅ‚kowit¸ i reszte z dzielenia num/denom. Wy- myÅ›lne zależne od implementacji, jeÅ›li SIGIGN, to sygnaÅ‚ bedzie eść a ¸ zigonorowany, w pozostaÅ‚ych przypadkach wywoÅ‚uje si¸ wska- e niki wstawia do skÅ‚adowych quot i rem struktury typu div_t; zan¸ fukcje z podanymrodzajemsygnaÅ‚u. a ¸ skÅ‚adowe s¸ typu int. a Poniżej możliwe sygnaÅ‚y: SIGABRT nienormalne zakoÅ„czenie programu ldiv_t ldiv(long num, long denom) SIGFPE bÅ‚¸ arytmetyczny ad SIGILL zÅ‚a postać funkcji SIGINT ingerencja użytkownika (przerwanie) J.w. dla typu long. SIGSEGV nielegalne odwoÅ‚anie do pami¸ eci SIGTERM żadanie zakoÅ„czenia wykonywania Diagnostyka: nagłówek Funkcja signal zwraca poprzednia wartość argumentu han- PrzeksztaÅ‚ca czas kalendarzowy *tp na czas poÅ‚udnika zerowego. ¸ dler dla danego sygnaÅ‚u lub SIGERR w przypadku bÅ‚¸ edu. JeÅ›li teraz wystapi sygnaÅ‚ sig, to najpierw przywraca si¸ ¸ e domyÅ›ln¸ akcje dla tego sygnaÅ‚u, a nast¸ wywoÅ‚uje wska- struct tm *localtime(const time_t *tp) a ¸ epnie zan¸ funkcj¸ obsÅ‚ugi tak, jakby nast¸ wywoÅ‚anie (*han- a e apiÅ‚o dler)(sig). Po powrocie z funkcji obsÅ‚ugi program b¸ wzno- edzie wiony w miejscu, w którym nast¸ przerwanie sygnaÅ‚em. apiÅ‚o PrzeksztaÅ‚ca czas kalendarzowy *tp na czas lokalny. size_t strftime(char *s, size_t *smax, int raise(int sig) const char *fmt, const struct tm *tp) Funkcja raise wysyÅ‚a do programu sygnaÅ‚ sig. W razie niepo- PrzeksztaÅ‚ca dat¸ i czas zawarte w strukturze *tp w tekst i za- e wodzenia zwraca wartość różn¸ od zera. a pisuje w miejsce wskazane przez s. PrzeksztaÅ‚cenie odbywa si¸ e na podstawie formatu fmt, analogicznego do formatu fprintf. ObsÅ‚uga daty i czasu: nagłówek PrzykÅ‚ad: SkÅ‚adowe struktury tm: int tm_sec; sekundy, które upÅ‚yn¸ po minu- #include eÅ‚y cie (0,61) #include int tm_min; minuty, które upÅ‚yn¸ po godzinie (0,59) eÅ‚y #include int tm_hour; godziny, które upÅ‚yn¸ od północy (0,23) eÅ‚y int main(void) int tm_mday; dzieÅ„ miesiça (1,31) { int tm_mon; mie_iace, które upÅ‚yn¸ od stycz- eÅ‚y struct tm *time_now; nia (0,11) time_t secs_now; int tm_year; lata, ktUe upÅ‚yn¸ od 1900 r. eÅ‚y char str[80]; int tm_wday; dni, które upÅ‚yn¸ od niedzieli (0,6) eÅ‚y tzset(); int tm_yday; dni, które upÅ‚yn¸ od pierwszego eÅ‚y time(&secs_now); stycznia (0,365) time_now = localtime(&secs_now); int tm_isdst; znacznik letniej zmiany czasu strftime(str, 80,"It is %M minutes after %I" " o clock (%Z) %A, %B %d 19%y",time_now); printf("%s\n",str); clock_t clock(void) return 0; } Zwraca czas procesora wykorzystany przez program lub -1, gdy Ograniczenia implementacji: nagłówki nie może tego wykonać. i Wyrażenie clock()/CLOCKS_PER_SECdaje czas w sekundach. Nagłówek zawiera definicje staÅ‚ych okreÅ›laj¸ acych minimalne rozmiary typów caÅ‚kowitych, a minimalne time_t time(time_t *tp) rozmiary typów rzeczywistych. Zwraca aktualny czas kalendarzowy lub -1. Jeżeli tp jest różne od NULL, to zwracana wartość jest wstawiana również do *tp. double difftime(time_t time2, time_t time1) Zwraca różnic¸ czasów wyrażon¸ w sekundach. e a time_t mktime(struct tm *tp) PrzeksztaÅ‚ca czas lokalny zawarty w strukturze *tp na czas ka- lendarzowy w formacie używanym przez time. Nast¸ cztery funkcje zwracaj¸ wskaznik do statycznego epne a obiektu, który może ulec zmianie na skutek innych wywoÅ‚aÅ„ tych funkcji. char *asctime(const struct tm *tp) PrzeksztaÅ‚ca czas zapisany w strukturze *tp na tekst: Sun Jan 3 15:14:13 1988\n\0 char *ctime(const time_t *tp) PrzeksztaÅ‚ca czas kalendarzowy *tp na czas lokalny; równoważne wywoÅ‚aniu: asctime(localtime(tp)). struct tm *gmtime(const time_t *tp)