C Standard Library Stdlib H
# C Standard Library β
## Introduction
The **stdlib.h** header file defines four variable types, several macros, and various general utility functions.
`` is a header file in the C standard library that provides many general utility functions, including memory allocation, process control, sorting and searching, and string conversion, among others.
## Library Variables
The following are the variable types defined in the stdlib.h header file:
| No. | Variable & Description |
| --- | --- |
| 1 | **size_t** This is an unsigned integer type, which is the result of the **sizeof** keyword. |
| 2 | **wchar_t** This is an integer type of the size of a wide character constant. |
| 3 | **div_t** This is the structure returned by the **div** function. |
| 4 | **ldiv_t** This is the structure returned by the **ldiv** function. |
## Library Macros
The following are the macros defined in the stdlib.h header file:
| No. | Macro & Description |
| --- | --- |
| 1 | **NULL** This macro is the value of a null pointer constant. |
| 2 | **EXIT_FAILURE** This is the value to be returned by the exit function when the call fails. |
| 3 | **EXIT_SUCCESS** This is the value to be returned by the exit function when the call succeeds. |
| 4 | **RAND_MAX** This macro is the maximum value returned by the rand function. |
| 5 | **MB_CUR_MAX** This macro represents the maximum number of bytes in a multibyte character set, which cannot be greater than MB_LEN_MAX. |
## Library Functions
The following are the functions defined in the stdlib.h header file:
| No. | Function & Description |
| --- | --- |
| 1 | [double atof(const char *str)](#) Converts the string pointed to by the argument _str_ to a floating-point number (type double). |
| 2 | [int atoi(const char *str)](#) Converts the string pointed to by the argument _str_ to an integer (type int). |
| 3 | [long int atol(const char *str)](#) Converts the string pointed to by the argument _str_ to a long integer (type long int). |
| 4 | [double strtod(const char *str, char **endptr)](#) Converts the string pointed to by the argument _str_ to a floating-point number (type double). |
| 5 | [long int strtol(const char *str, char **endptr, int base)](#) Converts the string pointed to by the argument _str_ to a long integer (type long int). |
| 6 | [unsigned long int strtoul(const char *str, char **endptr, int base)](#) Converts the string pointed to by the argument _str_ to an unsigned long integer (type unsigned long int). |
| 7 | [void *calloc(size_t nitems, size_t size)](#) Allocates the requested memory and returns a pointer to it. |
| 8 | [void free(void *ptr)](#) Deallocates the memory previously allocated by a call to _calloc, malloc_, or _realloc_. |
| 9 | [void *malloc(size_t size)](#) Allocates the requested memory and returns a pointer to it. |
| 10 | [void *realloc(void *ptr, size_t size)](#) Attempts to resize the memory block pointed to by ptr that was previously allocated with a call to _malloc_ or _calloc_. |
| 11 | [void abort(void)](#) Causes an abnormal program termination. |
| 12 | [int atexit(void (*func)(void))](#) Calls the specified function **func** when the program terminates normally. |
| 13 | [void exit(int status)](#) Causes the program to terminate normally. |
| 14 | [char *getenv(const char *name)](#) Searches for the environment string pointed to by name and returns the associated value to the string. |
| 15 | [int system(const char *string)](#) The command specified by string is passed to the host environment to be executed by the command processor. |
| 16 | [void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))](#) Performs a binary search. |
| 17 | [void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))](#) Sorts an array. |
| 18 | [int abs(int x)](#) Returns the absolute value of x. |
| 19 | [div_t div(int numer, int denom)](#) Divides numer (numerator) by denom (denominator). |
| 20 | [long int labs(long int x)](#) Returns the absolute value of x. |
| 21 | [ldiv_t ldiv(long int numer, long int denom)](#) Divides numer (numerator) by denom (denominator). |
| 22 | [int rand(void)](#) Returns a pseudo-random integer in the range 0 to _RAND_MAX_. |
| 23 | [void srand(unsigned int seed)](#) This function seeds the random number generator used by the function **rand**. |
| 24 | [int mblen(const char *str, size_t n)](#) Returns the length of the multibyte character pointed to by the argument _str_. |
| 25 | [size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)](#) Converts the string of multibyte characters pointed to by the argument _str_ to the array pointed to by _pwcs_. |
| 26 | [int mbtowc(wchar_t *pwc, const char *str, size_t n)](#) Checks the multibyte character pointed to by the argument _str_. |
| 27 | [size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)](#) Converts the codes stored in the array _pwcs_ to multibyte characters and stores them in the string _str_. |
| 28 | [int wctomb(char *str, wchar_t wchar)](#) Checks the multibyte character corresponding to the argument _wchar_. |
### Examples
Here are some examples using functions from ``.
Dynamic Memory Allocation:
## Example
```c
#include
#include
int main() {
int *array = (int*)malloc(10 * sizeof(int));
if (array == NULL) {
perror("Memory allocation failed");
return 1;
}
for (int i = 0; i < 10; i++) {
array = i;
printf("%d ", array);
}
printf("n");
free(array);
return 0;
}
Pseudo-Random Number Generation:
## Example
```c
#include
#include
#include
YouTip