Standardin kirjasto on C on nyt standardoitu kokoelma otsikot ja rutiinit käyttää toteuttamaan yhteisiä toimintoja, kuten panos / tuotos ja hallintaan jousille C-kielessä Toisin kuin muut kielet kuten Pascal ja PL / I , C ei sisällä avainsanoja näihin tehtäviin , joten melkein kaikki C: ssä kirjoitetut ohjelmat käyttävät standardikirjastoa, jos vain tuloksen näyttämiseen.
Jokaisen toiminnon nimi ja allekirjoitus ("prototyyppi" C: ssä) on kuvattu lähdekoodiin sisältyvissä otsikoissa , kun taas toimintojen objektikoodi erotetaan ohjelmistokirjastossa , joka linkitetään vain lähdekoodiin - muu ohjelma vain linkittäessäsi . Otsikoiden nimi ja nimitila ovat yleistyneet. Useimmiten kukin otsikko on erillinen tiedosto , mutta toteutusten organisaatio on edelleen erilainen. Vakiokirjasto tuli alun perin kääntäjän mukana , mutta nykyään se on usein osa käyttöjärjestelmää . Unix- järjestelmissä se löytyy yleensä hakemistosta /usr/lib/, ja se on nimetty libc.atai libc.so ; otsikkotiedostot ovat hakemistossa /usr/include. Kääntäjä kuitenkin tietää aina, missä nämä tiedostot sijaitsevat, joten sitä ei tarvitse kertoa.
Käytössä Linux , The glibc kirjastoa yleensä käytetään; alla Windows , se on yleensä standardi kirjaston Visual C ++ , kutsutaan MSVCR*.dll, koska se on saatavilla riippumatta C-kääntäjä käyttää. Koska C-kääntäjät tarjoavat usein enemmän toimintoja kuin ISO- ja POSIX C -standardit määrittelevät , tietyn kääntäjän mukana toimitettu vakiokirjasto on huonosti yhteensopiva muiden kääntäjien vakiokirjastojen kanssa toiminnoille, joita ei ole standardoitu.
Kokemus on osoittanut, että suurin osa tavallisesta C-kirjastosta on hyvin suunniteltu. Jotkut jälkikäteen katsottavat osat näyttävät kuitenkin olevan virheitä. Rivinlukutoiminto getsja scanfsyötemerkkijonojen käyttö ovat lukuisien puskurin ylivuotojen lähde , ja useimmat ohjelmointioppaat suosittelevat niiden käytön välttämistä. Toinen vanha on strtoktoiminto, joka on suunniteltu primitiiviseksi leksikaaliseksi analysaattoriksi, mutta joka on melko "hauras" ja vaikea käyttää. Lopuksi, päivämäärien ja aikojen hallinta on primitiivistä, erityisesti aikavyöhykkeiden hallinnan käytännössä mahdotonta.
Unix- ja ohjelmointikielen C perustivat AT & T- ja Bell- laboratoriot (AT & T: n Bell Laboratories) 1970- luvun alussa . Primitiivinen C-kieli ei toimittanut sisäänrakennettua toimintoja, kuten I / O-toimintojen (toisin kuin perinteiset kielet kuten Pascal ja Fortran ). Ajan myötä C-käyttäjäyhteisöt ovat jakaneet ideoita ja toteutuksia siitä, mitä nyt kutsumme C-standardikirjastoksi näiden ominaisuuksien tarjoamiseksi. Monet näistä ideoista sisällytettiin C-ohjelmointikielen standardoituun määritelmään.
1970-luvulla C: stä tuli suosittu. Monet yliopistot ja organisaatiot ovat luoneet omat muunnelmansa tästä kielestä projekteilleen. Vuonna 1980 yhteensopivuus ongelmia eri toteutuksia C ilmestyi.
Vuonna 1983 American National Standards Institute (ANSI) on muodostettu komitea vahvistaa vaatimusten mukaiset C, joka tunnetaan nimellä "ANSI C". Tämä työ huipentui C89- standardin luomiseen vuonna 1989 . Osa tuloksena standardi oli joukko toimintoja kirjaston kutsutaan standardin ANSI C-kirjasto ( ANSI C standardin kirjasto ). Tästä standardista tuli kansainvälinen standardi vuonna 1990 , ja se tunnetaan myös nimellä ISO C (ISO C) .
Myöhemmät ISO C -standardin versiot lisäsivät kirjastoon uusia toimintoja ja otsikoita. Näiden laajennusten tuki vaihtelee toteutuksen mukaan. Otsikot <iso646.h>, <wchar.h>ja <wctype.h>lisättiin kanssa ohjearvoja tarkistuksen 1 ( Ohjaava Tarkistus 1 ), jäljempänä lyhennetty Amd.1 , joka on lisäksi standardin C ratifioitu 1995 . Otsikot <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h>ja <tgmath.h>lisättiin C99, tarkistamista C standardin, joka julkaistiin 1999 .
ISO C -standardikirjasto koostuu 24 otsikosta, jotka voidaan sisällyttää ohjelmoijan projektiin yhdellä direktiivillä. Jokainen otsikko sisältää toimintoprototyyppejä, tyyppimäärityksiä ja makroja. Näiden otsikkojen sisältö on kuvattu alla.
ISO-standardin C-kirjasto on pieni verrattuna muihin kieliin (esim. Java ). Se tarjoaa matematiikan, merkkijonojen manipuloinnin , tyyppimuunnoksen sekä tiedostojen ja päätelaitteiden syöttö- ja tulostustoiminnot . Se ei sisällä vakiopohjaa "säilötyyppejä", samoin kuin C ++ - kielen vakiomallikirjasto . Se jättää sivuun graafiset käyttöliittymät (GUI), verkkotyökalut, synkronointitoiminnot tehtävien välillä ja runsaasti muita Java- vakiotoimintoja. Tärkein etu on pieni standardin kirjasto on, että se on paljon helpompi tarjota työympäristö C ISO kuin muita kieliä, ja aukot C-kielen sovelluksia uusille alustoille on siis suhteellisen nopeasti.
Monet muut kirjastot on kirjoitettu kehittämään toiminnallisuutta, joka vastaa muiden kielten tarjoamia toimintoja tavallisessa kirjastossa. Esimerkiksi ehdotettu työpöytäympäristö GNOME kehitti Box Tools GIMP: n (GIMP ToolKit, GTK) ja GLib- kirjaston, joka sisältää tietorakenteiden säilöjä, ja tunnettuja ominaisuuksia on monia muita. Tästä valikoimasta käytettävissä olevia kirjastoja jotkut työkalupakit ovat osoittaneet ylivertaisia ominaisuuksia ajan myötä. Suurin haittapuoli on, että he eivät usein toimi erityisen hyvin yhdessä, ohjelmoijat joutuvat usein taistelemaan useilla eri kirjastoilla, ja jotkut ominaisuudet voivat esiintyä eri muodoissa kunkin tietyn alustan alla, joskus jopa saman tärkeän ohjelmiston sisällä.
C ++ ohjelmointikieli valtaa toiminnallisuutta ISO C standardin kirjasto, mutta tekee useita muutoksia, kuten muuttamalla nimet otsikot välillä <xxx.h>on <cxxx>(mutta nimiä C tyyli ovat edelleen käytettävissä, vaikka vanhentunut) ja sijoita kaikki tunnisteet nimitilaan (nimiavaruuteen) std.