# Standaard-C-bibliotheek

De Standaard-C-bibliotheek (libc) is een gestandaardiseerde bibliotheek voor de programmeertaal C. De bibliotheek bestaat uit een collectie headerbestanden en code voor een 200-tal courante functies, zoals voor het uitvoeren van input/output, manipuleren van strings of wiskundige bewerkingen. Deze bibliotheek is in elke C-omgeving aanwezig.
In tegenstelling tot verschillende andere programmeertalen, zoals vroeger Pascal of Fortran, kende C weinig ingebouwde functionaliteit. Uit verschillende implementaties ontstonden uiteindelijk na verloop van tijd de nu standaardfuncties. De naam en karakteristieken van elke bibliotheekfunctie worden bepaald in een headerbestand; de eigenlijk implementatie bevindt zich echter in een afzonderlijk bibliotheekbestand. Deze code wordt uiteindelijk meegelinkt in het programma. Veel compilers leveren een implementatie van de standaardbibliotheek mee, of kunnen gebruik maken van de standaardbibliotheek die op het platform aanwezig is.

## ANSI-standaard

De ANSI-standaard-C-bibliotheek bevat 24 headerbestanden. In vergelijking met sommige andere talen, zoals Java, is deze standaardbibliotheek minimaal. Ze voorziet een aantal basisfuncties voor wiskundige bewerkingen, stringmanipulaties, typeconversies en invoer en uitvoer naar bestand en naar de console. De bibliotheek bevat geen containertypes, zoals de Standard Template Library in C++ die levert, geen GUI-routines of netwerkfunctionaliteiten.
| assert.h | Asserties |
| complex.h | Complexe getallen |
| ctype.h | Test op de waarde van karakters |
| errno.h | Errorcodes |
| fenv.h | Instelling voor floating point-bewerkingen |
| float.h | Implementatiespecifieke waarden en limieten voor floating point-getallen |
| inttypes.h | Conversie en formattering van integers |
| iso646.h | Alternatieve notaties voor operatoren voor gebruik onder een ISO 646-tekenset |
| limits.h | Implementatiespecifieke limieten voor gehele typen |
| locale.h | Voor lokale instellingen (locale) |
| math.h | Wiskundige functies |
| setjmp.h | sprongfunctie |
| signal.h | Signalen |
| stdarg.h | Variabel aantal argumenten voor functies |
| stdbool.h | Boolean-datatype |
| stddef.h | Definitie van verscheidene types en macro's |
| stdint.h | Verscheidene integertypes |
| stdio.h | Invoer en uitvoer |
| stdlib.h | Verscheidene standaardfuncties |
| string.h | Stringbewerkingen |
| tgmath.h | Typegenerische wiskundige functies |
| time.h | Datum- en tijdbewerkingen |
| wchar.h | Ondersteuning voor karakters in grotere tekensets |
| wctype.h | Analoog als ctype.h, maar voor uitgebreide karakters |

## Implementaties

Samen met de compiler gcc werd door het GNU-project de vrije implementatie glibc ontwikkeld. Deze wordt vooral op Linux- en UNIX-systemen gebruikt. Er bestaan ook vrije implementaties onder BSD-licentie, gebruikt in systemen zoals OpenBSD, FreeBSD en NetBSD.
Op Microsoft Windows gebruikt Microsofts compiler een eigen implementatie van de bibliotheek in de Microsoft Visual C/C++ Runtime (mscvrt.dll).
Voor embedded systemen bestaan er kleine minimale implementaties, zoals µClibc (speciaal voor uClinux ontwikkeld) of dietlibc.

## Andere talen

Sommige andere programmeertalen nemen functionaliteit van de standaard-C-bibliotheek over in hun eigen bibliotheek. Zo biedt de programmeertaal C++ de functionaliteit aan in de namespace std, door middel van headerbestanden met gelijkaardige namen als de C-headerbestanden. Ook talen als D of Python gebruiken de standaardbibliotheek van C.