Plik stdlib.h

   W pliku stdlib.h znajdują się zapowiedzi funkcji związanych głównie z systemem operacyjnym i z zamianą zmiennych jednego typu na inny typ. Zaczniemy od funkcji konwertujących tekst na liczbę i odwrotnie.
int atoi (const char* TekstLiczba); //Zamiana ASCII na int char* itoa (int Liczba, char* Bufor, int Baza); //Zamiana int na ASCII. Pierwsza funkcja zwraca wartość liczby zapisanej tekstowo w TekstLiczba. Tekst jest traktowany jako liczba do napotkania pierwszego znaku nie będącego cyfrą. Przykładowo tekst "1234abc" zostanie zamieniony na liczbę 1234. Jeśli pierwszy znak w tekście nie będzie cyfrą ani znakiem + lub -, funkcja zwróci zero. Druga funkcja robi odwrotną operację. Zamienia liczbę Liczba na odpowiadający jej ciąg znaków i umieszcza w buforze, na który wskazuje wskaźnik Bufor. Dodatkowo wskaźnik na ten bufor jest zwracany przez funkcję. Ostatni parametr może wyglądać dla ciebie zagadkowo. Otóż podaje się w nim bazę systemu liczbowego. Przykładowo dla systemu dziesiętnego, z którego korzystamy na codzień, będzie to 10. Dla systemu szesnastkowego 16 itp. Jak widzisz, ta funkcja może być wyjątkowo przydatna! Możesz z jej pomocą zamieniać liczbę na jej reprezentację w różnych systemach liczbowych, na przykład binarnym [dwójkowym], szesnastkowym [heksadecymalnym] i innych ;-). Trzeba tylko uważać, by tekst odpowiadający liczbie mieścił się w buforze, bo funkcja nie sprawdza, czy w buforze jest dość miejsca na cały tekst.

   Kolejne funkcje konwersji zamieniają tekst na liczbę ułamkową i odwrotnie.
double atof (const char* TekstLiczba); //Zamiana tekst->ułamek char* gcvt (double Liczba, int IleCyfr, char* Bufor); //Zamiana ułamek->tekst Pierwsza z nich zwraca wartość liczbową tekstu TekstLiczba. Cyfry liczby mogą być poprzedzone białymi znakami, a także znakiem + lub -. Druga funkcja zamienia podaną liczbę ułamkową Liczba na odpowiadający jej tekst i umieszcza w buforze Bufor. Dodatkowo zwraca wskaźnik na ten bufor. Liczba będzie miała tyle cyfr, ile wynosi wartość parametru IleCyfr. Jeśli wynik nie mieści się na tylu cyfrach, zostanie zaokrąglony. Na przykład chcemy przeznaczyć na liczbę 6 cyfr. Dla liczby 2.34567 wynik zmieści się w całości. Ale liczba 2.345678 ma za dużo znaczących cyfr, więc zostanie zaokrąglona do 2.34568. Jeśli nie rozumiesz tego, policz ile jest cyfr ;-). Podobnie jak poprzednio, trzeba uważać na długość bufora. Jeśli chcesz wiedzieć, jak duży musi być bufor, można to policzyć. Do ilości znaków, jaką przeznaczasz na znaczące cyfry, dodaj jeden znak na kropkę, jeden na znak liczby i jeden na znak NULL.

   Kolejną niespodzianką, jaką serwuje nam plik stdlib.h, są zapowiedzi dwóch przydatnych funkcji do generowania liczb losowych. Właściwie to są to liczby pseudolosowe, bo znając liczbę przed chwilą wylosowaną, można wyliczyć ciąg kolejnych liczb, które wypluje generator. Ciąg powtarza się po przejściu przez wszystkie kombinacje.
int rand (); //Zwraca liczbę "losową" void srand (unsigned int Ziarno); //Ustawia ziarno generatora Pierwsza funkcja zwraca liczbę losową z całego przedziału dla liczb int. Jeśli chcesz wylosować liczbę z innego przedziału, potrzebna ci jest reszta z dzielenia [modulo] liczby którą zwraca rand przez wielkość przedziału. Dodatkowo możesz przesunąć przedział, dodając do wyniku wartość przesunięcia. Wszystko to może brzmieć zbyt skomplikowanie, więc może zarzucę jakimiś przykładami ;-).
int Wynik1 = (rand() % 6) + 1; //Losuje liczbę oczek wyrzuconą na kostce int Wynik2 = (rand() % 80) + 1; //Losuje liczbę wylosowaną w Multilotku Druga z powyższych funkcji inicjuje generator liczb losowych, podając mu liczbę, od której ma zacząć generowanie. Dość poważnym błędem jest ustawianie tej wartości zawsze takiej samej na początku programu, bo wtedy wygenerowany w programie ciąg wartości będzie zawsze taki sam. Najepiej ustawić tą wartość na bierzący czas systemowy, bo wtedy przy każdym uruchomieniu wygenerowany ciąg będzie inny, a więc już całkowicie losowy.

   Plik stdlib.h zawiera też funkcje rezerwacji pamięci, takie jak malloc czy free, jednak obecnie w języku C++ są już do tego odpowiednio operatory new i delete, które znacznie lepiej sobie z tym radzą. Dlatego nie ma potrzeby opisywania ich ;-J.

   Ostatni rodzaj funkcji w pliku stdlib.h wiąże się z systemem operacyjnym. Dwie pierwsze funkcje służą do pobierania informacji o zmiennych środowiskowych systemu, więc nie są zbyt przydatne do naszych celów. Nie będę ich opisywał, a jeśli uznasz że na coś ci się one przydadzą, poszukaj sobie ich opisu w sieci lub dokumentacji twojego kompilatora ;-J. Omówię jedynie ostatnią z tych funkcji, bo jest dość przydatna.
char* getenv (const char* Nazwa); //Pobiera wartość zmiennej środ. int putenv (const char* NazwaWartosc); //Ustawia wartość zmiennej środ. int system (const char* Komenda); //Wywołuje polecenie systemowe Ostatnia z tych funkcji służy do wywołania polecenia systemu. Zależnie od platformy polecenia mogą być różne. Jeśli program jest pisany dla Windows, możemy wydawać takie polecenia jak w wierszu poleceń DOS. Jeśli program działa pod Linuxem, możemy wydawać UNIXowskie polecenia. Przykładowe polecenia pod Windows widać poniżej:
system("cls"); //Czyści ekran system("pause"); //Wstrzymuje pracę aż do wciśnięcia klawisza system("time"); //Pokazuje bierzący czas i pozwala go ustawić Funkcja system oddaje na moment sterowanie systemowi. Dopiero gdy polecenie systemowe się zakończy, sterowanie jest zwracane twojemu programowi.

   W pliku stdlib.h jest jeszcze kilka innych funkcji, jednak uznałem że nie są one na tyle często używane, by trzeba było je opisywać. Jeśli interesuje cię, co to za funkcje, możesz samodzielnie przejrzeć ten plik i wyszukać informacji na temat interesujących cię funkcji. Od tego jest internet i dokumentacje bibliotek ;-).