DODATEK B BIBLIOTEKA STANDARDOWA ________
char *getenv(const char *name)
Funkcja getenv zwraca tekst zawarty w zmiennej środowiskowej wskazanej przez nazwę name lub NULL, jeśli taka zmienna nie istnieje. Szczegóły zależą od implementacji.
void *bsearch(const void *key, const void *base, size_t n, size_t size,
int (*cmp) (const void *keyval, const void *datum))
Funkcja bsearch przegląda tablicę base[0]...base[n-1], złożoną z elementów o rozmiarze size, w poszukiwaniu elementu odpowiadającego obiektowi *key. Funkcja wskazana przez cmp musi zwracać wartość ujemną, gdy jej pierwszy argument (klucz szukania) jest mniejszy od drugiego (element tablicy), wartość zero - gdy jest równy, i wartość większą od zera - gdy jest większy. Elementy tablicy base muszą być uporządkowane rosnąco. Funkcja bsearch zwraca wskaźnik do znalezionego elementu lub NULL, jeśli taki element nie istnieje.
void qsort(void *base, size_t n, size_t size,
int (*cmp) (const void *, const void *))
Funkcja qsort porządkuje w rosnącej kolejności tablicę base[0]...base[n-1] złożoną z elementów o rozmiarze size. Funkcja porównująca wskazana przez cmp jest taka sama, jak w funkcji bsearch.
int abs(int n)
Funkcja abs zwraca wartość bezwzględną argumentu n o typie int. long labs(long n)
Funkcja labs zwraca wartość bezwzględną argumentu n o typie long. div_t div(int num, int denom)
Funkcja div oblicza część całkowitą i resztę z dzielenia num/denom. Wyniki są wstawiane do składowych quot i rem struktury typu div_t; składowe są typu int.
Idiv__t ldiv(long num, long denom)
Funkcja ldiv oblicza część całkowitą i resztę z dzielenia num/denom. Wyniki są wstawiane do składowych quot i rem struktury typu ldiv_t; składowe są typu long.
Makro assert stosuje się do diagnozowania programów: void assert(int wyrażenie)
I powered by
B7 ZMIENNE LISTY ARGUMENTÓW: NAGŁÓWEK <STDARG.H> -fi-i——— -
Jeśli przy wykonaniu asser\(wyraienie)
wartość wyrażenia jest równa zero, to makro assert wypisze do stderr komunikat w następującej postaci:
Assertion failed: wyrażenie, file nazwa_pliku, linę nnn
a następnie wywoła funkcję abort w celu zakończenia programu. Nazwa pliku źródłowego i numer wiersza (nnn) pochodzą z wbudowanych makr preprocesora: __FILE__ i „LINE__.
Jeśli przed włączeniem nagłówka <assert.h> do pliku źródłowego zdefiniowano makro NDEBUG, to makro assert jest ignorowane.
Nagłówek <stdarg.h> zawiera narzędzia do obsługi listy argumentów funkcji o nie-znanej liczbie elementów o nieznanych typach.
Przypuśćmy, że ostatni ^par jest ostatnim wymienionym z nazwy parametrem funkcji f, która ma zmienną liczbę argumentów. Wewnątrz funkcji f należy zadeklarować zmienną ap typu va_list, która będzie wskazywać kolejne argumenty:
va_list ap;
Zmienną ap trzeba zainicjować za pomocą makra va_start przed użyciem któregokolwiek z nienazwanych argumentów funkcji:
va_start(va_list ap, ostatni ^par)]
Od tej pory każde wywołanie makra va_arg udostępni wartość, która ma typ i wartość kolejnego nienazwanego argumentu funkcji; wskaźnik ap zostanie przy tym tak zmodyfikowany, aby następne użycie makra va_arg udostępniło następny argument:
typ va_arg(va_list ap, typ)]
Makro
void va_end(va_list ap);
musi być wywołane raz, po obsłużeniu argumentów, ale przed opuszczeniem funkcji f.
339