# C library

The C library contains many of the functions that are defined by the C99 standard as part of the standard C library. More...

## Modules
| String and memory manipulations

| This group contains functions that manipulate memory and C zero-terminated strings.
| Standard input/output formatting functions

| Core functions for formatted input and output.
| Standard library functions

| This part of the library has been extended with functions that are not part of the standard but that I believe are useful in a resource constrained system, especially if you want to avoid the use of a `printf()` and `scanf()` type function.
| Time manipulation utilities

| These functions convert between calendar date and UNIX representation of time.
| Character classes

| These functions work on ASCII characters and can classify them as well as change between upper and lower case letters.
| Wide character conversions

| These functions convert between wide chars (16 or 32 bit) and their UTF-8 representation.
| Nonlocal jumps

| This function pair allows you to return from a deep function call chain in one hit.
| Miscellaneous functions

| This group contains functions that are not defined by the C standard but are often useful in embedded system work.

## Detailed Description

The C library contains many of the functions that are defined by the C99 standard as part of the standard C library.

Functions that do not make sense in a non-hosted, embedded environment have been omitted. Functions that makes sense but depend on the implementation of some underlying service are either omitted or provided in a form that requires you to write an implementation-aware wrapper around them. Some functions that are not re-entrant or assume the presence of certain system services have also been omitted or are provided in a form that is not strictly standard compliant but useful in an embedded system.

Several functions that are not specified by the standard but are useful, logically belong to this group or simply complement the functions defined by the standard have been added.

Since it is intended for embedded systems, it goes without saying that all functions in the library are re-entrant, they operate only in registers, on the stack or in memory explicitely provided by you.