A standard könyvtár a C már szabványosított gyűjteménye fejlécek és rutinok végrehajtásához alkalmazott közös műveletek, mint például input / output és kezelése húrok a C nyelvben Eltérően más nyelven, mint a Pascal és PL / I , C nem tartalmazza a kulcsszavakat az ilyen feladatok , így szinte az összes C-ben írt program a szabványos könyvtárat használja, ha csak eredmény megjelenítésére.
Az egyes függvények nevét és aláírását (a "prototípus" C-ben) fejlécek írják le, amelyek a forráskódban szerepelnek , míg a függvények objektumkódja el van választva egy szoftverkönyvtárban , amely csak a forráskódhoz fog kapcsolódni . pihenni a program csak akkor, ha összeköti . A fejlécek neve és névtere általánossá vált. Leggyakrabban minden fejléc külön fájl , de a megvalósítások szervezése változatos marad. A standard könyvtár eredetileg a fordítóval érkezett , de ma gyakran az operációs rendszer része . Unix rendszereken általában a könyvtárban található /usr/lib/, és a libc.avagy libc.so ; a fejlécfájlok a könyvtárban vannak /usr/include. A fordító azonban mindig tudja, hol találhatók ezek a fájlok, ezért nem kell elmondani.
A Linux a glibc könyvtár általában használni; Windows alatt általában a Visual C ++ szabványos könyvtárának hívják MSVCR*.dll, mert a használt C fordítótól függetlenül elérhető. Mivel a C fordítók gyakran több funkcionalitást kínálnak, mint az ISO és a POSIX C szabványok , ezért egy adott fordítóval szállított szabványos könyvtár gyengén kompatibilis más szabványos függvénykönyvtárakkal.
A tapasztalatok azt mutatják, hogy a standard C könyvtár nagy része jól megtervezett. Néhány utólag látható rész azonban hibának tűnik. A sorolvasási funkció getsés a scanfbemeneti karakterláncok olvasása sok puffertúlcsordulás forrása , és a legtöbb programozási útmutató javasolja azok használatának elkerülését. Egy másik oldie egy strtokolyan funkció, amelyet primitív lexikai elemzőként terveztek, de meglehetősen "törékeny" és nehezen használható. Végül a dátumok és időpontok kezelése primitív, különös tekintettel az időzónák kezelésének virtuális lehetetlenségére.
A Unix-ot és a C programozási nyelvet az AT & T és a Bell laboratóriumai (az AT & T's Bell Laboratories) hozták létre az 1970-es évek elején . A primitív C nyelv nem biztosított olyan beépített funkcionalitást, mint az I / O műveletek (ellentétben a hagyományos nyelvekkel, például a Pascal és a Fortran ). Az idő múlásával a C felhasználói közösségek ötleteket és megvalósításokat osztottak meg azzal kapcsolatban, amit ma C Standard Library-nek hívunk, hogy biztosítsák ezeket a szolgáltatásokat. Ezen ötletek közül sok beépült a C programozási nyelv szabványosított meghatározásába.
Az 1970-es évek során a C népszerűvé vált. Számos egyetem és szervezet létrehozta saját változatait ezen a nyelven projektjeihez. Az 1980-as években megjelentek a C különböző megvalósításai közötti kompatibilitási problémák.
A 1983 A American National Standards Institute (ANSI) létrehozott egy bizottságot, hogy létrehoz egy szabványos előírás a C, az úgynevezett "ANSI C". E folyamatok eredményeképpen létrehozásával a C89 szabvány a 1989 . Része a kapott szokásos volt, egy sor funkciók könyvtár úgynevezett szabványos ANSI C könyvtár ( ANSI C standard könyvtár ). Ez a szabvány 1990- ben lett nemzetközi szabvány , és ISO C (ISO C) néven is ismert .
Az ISO C szabvány későbbi felülvizsgálata új funkciókat és fejléceket adott a könyvtárhoz. Ezeknek a bővítményeknek a támogatása megvalósításonként eltérő. Fejlécek <iso646.h>, <wchar.h>és <wctype.h>adunk a normatív Módosítás 1 ( Normatív módosítás 1 ), a továbbiakban rövidítve Amd.1 , amely amellett, hogy a szabványos C ratifikált 1995 . A fejlécek <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h>és <tgmath.h>adunk hozzá C99, felülvizsgálatát, szabványos C, megjelent 1999 .
Az ISO C szabványos könyvtár 24 fejlécből áll, amelyek egyetlen irányelvvel beilleszthetők egy programozó projektjébe. Minden fejléc függvény prototípusokat, típusdefiníciókat és makrókat tartalmaz. Ezen fejlécek tartalmát az alábbiakban ismertetjük.
Más nyelvekhez (pl. Java ) képest az ISO szabványú C könyvtár apró. Ez biztosítja a matematika, a karakterlánc- manipuláció , a típusátalakítás, valamint a fájlokat és terminálokat kezelő bemeneti / kimeneti függvények alapvető készletét . Nem tartalmazza a "tárolótípusok" szabványos alapját, csakúgy, mint a C ++ nyelv Standard sablonkönyvtárát . Félreteszi a grafikus felhasználói felületeket (GUI), a hálózati eszközöket, a feladatok közötti szinkronizálási funkciókat és a Java által alapértelmezésben biztosított egyéb funkciók sokaságát . A kis szabványos könyvtár fő előnye, hogy sokkal könnyebb munkakörnyezetet biztosítani a C ISO számára, mint más nyelvek számára, és ezért a C nyelvi alkalmazások új platformokra történő portálása ezért viszonylag gyors.
Sok más könyvtárat azért írtak, hogy fejlesszék azokkal a funkciókkal, amelyek egyenértékűek a normál könyvtárukban található más nyelvek által biztosított funkciókkal. Például a javasolt asztali környezet, a GNOME kifejlesztette a Box Tools GIMP-t (GIMP ToolKit, GTK) és a GLib könyvtárat, amely adatszerkezeti tárolókat tartalmaz, és sok más ismert tulajdonság is található. A rendelkezésre álló könyvtárak ezen változatossága közül néhány eszközkészlet kiváló képességeket mutatott az idők során. A fő hátrány az, hogy gyakran nem működnek együtt különösebben jól, a programozók gyakran kénytelenek több különböző könyvtárat is zsonglőrködni, és egyes funkciók különböző formákban lehetnek jelen az egyes platformok alatt, néha ugyanazon a fontos szoftveren belül is.
A C ++ programozási nyelv veszi át a funkcionalitást a ISO C standard könyvtár, de több olyan változtatásokat, mint például átalakítja a nevét a fejléceket <xxx.h>a <cxxx>(azonban neveket a C-stílusú továbbra is elérhető, bár elavult ), és helyezze el az összes azonosítót a névtérben (névtér) std.