Standardowej biblioteki z C jest standaryzowany zbiór nagłówków i procedur stosowanych w celu realizacji wspólnych operacji, takich jak wejścia / wyjścia i zarządzania ciągów w języku C W przeciwieństwie do innych języków takich jak Pascal i PL / I , C nie zawiera słowa kluczowe dla tych zadań , więc prawie wszystkie programy napisane w C używają biblioteki standardowej, chociażby do wyświetlania wyniku.
Nazwa i podpis („prototyp” w C) każdej funkcji są opisane w nagłówkach, które są zawarte w kodzie źródłowym , podczas gdy kod obiektowy funkcji jest oddzielony w bibliotece oprogramowania , która będzie powiązana tylko z kodem źródłowym . reszta programu tylko wtedy, gdy łączącej . Nazwa i przestrzeń nazw nagłówków stały się powszechne. Najczęściej każdy nagłówek to osobny plik , ale organizacja wdrożeń pozostaje zróżnicowana. Biblioteka standardowa była pierwotnie dostarczana z kompilatorem , ale obecnie często jest częścią systemu operacyjnego . W systemach uniksowych zwykle znajduje się w katalogu /usr/lib/i nosi nazwę libc.alub libc.so ; pliki nagłówkowe znajdują się w katalogu /usr/include. Jednak kompilator zawsze wie, gdzie znajdują się te pliki, więc nie ma potrzeby tego mówić.
W systemie Linux zwykle używana jest biblioteka glibc ; w systemie Windows jest to generalnie standardowa biblioteka Visual C ++ , nazywana MSVCR*.dll, ponieważ jest dostępna niezależnie od używanego kompilatora C. Ponieważ kompilatory C często oferują więcej funkcji niż te określone przez standardy ISO i POSIX C , standardowa biblioteka dostarczana z określonym kompilatorem jest słabo kompatybilna ze standardowymi bibliotekami innych kompilatorów dla funkcji, które nie są ustandaryzowane.
Doświadczenie pokazało, że większość standardowej biblioteki C została dobrze zaprojektowana. Jednak niektóre fragmenty z perspektywy czasu wydają się być błędami. Funkcja odczytu linii getsi użycie scanfdo odczytu ciągów wejściowych są źródłem wielu przepełnień bufora , a większość przewodników programowania zaleca unikanie ich używania. Inną starą jest strtokfunkcja zaprojektowana jako prymitywny analizator leksykalny, ale która jest dość „delikatna” i trudna w użyciu. Wreszcie zarządzanie datami i godzinami jest prymitywne, w szczególności w przypadku wirtualnej niemożności zarządzania strefami czasowymi.
Unix i język programowania C zostały stworzone przez laboratoria AT&T i Bell (AT&T's Bell Laboratories) we wczesnych latach siedemdziesiątych . Prymitywny język C nie zapewniają wbudowane funkcje jakbym operacji wejścia / wyjścia (w przeciwieństwie do tradycyjnych języków takich jak Pascal i Fortran ). Z biegiem czasu społeczności użytkowników języka C dzieliły się pomysłami i implementacjami tego, co obecnie nazywamy biblioteką standardową języka C, aby zapewnić te funkcje. Wiele z tych pomysłów zostało włączonych do ujednoliconej definicji języka programowania C.
W latach siedemdziesiątych C stał się popularny. Wiele uniwersytetów i organizacji stworzyło własne odmiany tego języka na potrzeby swoich projektów. W latach osiemdziesiątych XX wieku pojawiły się problemy ze zgodnością między różnymi implementacjami C.
W 1983 roku Amerykański Narodowy Instytut Normalizacyjny (ANSI) utworzył komitet w celu ustalenia specyfikacji normy dla C, znanej jako „ANSI C”. Kulminacją tej pracy było stworzenie standardu C89 w 1989 roku . Część uzyskanego okazała się zestaw funkcji biblioteki zwany standardem biblioteki ANSI C ( ANSI C Standard biblioteki ). Norma ta stała się normą międzynarodową w 1990 roku i jest również znana jako ISO C (ISO C) .
Późniejsze wersje standardu ISO C dodały do biblioteki nowe funkcje i nagłówki. Obsługa tych rozszerzeń różni się w zależności od implementacji. Nagłówki <iso646.h>, <wchar.h>i <wctype.h>dodano normatywnego poprawki 1 ( normatywne Poprawka 1 ), dalej w skrócie przez Amd.1 , który jest dodatkiem do standardowego C ratyfikowane 1995 . Nagłówki <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h>i <tgmath.h>dodano do C99 przeglądu standardu C, opublikowanej w 1999 r .
Biblioteka standardu ISO C składa się z 24 nagłówków, które można włączyć do projektu programisty za pomocą jednej dyrektywy. Każdy nagłówek zawiera prototypy funkcji, definicje typów i makra. Treść tych nagłówków jest opisana poniżej.
W porównaniu z innymi językami (np. Java ), biblioteka C w standardzie ISO jest niewielka. Zapewnia podstawowy zestaw funkcji matematycznych, operacji na łańcuchach , konwersji typów oraz funkcji wejścia / wyjścia plików i terminala. Nie zawiera standardowej bazy „typów kontenerów”, podobnie jak biblioteka szablonów standardowych języka C ++ . Pomijając graficzne interfejsy użytkownika (Graphical User Interface, w skrócie GUI), narzędzia sieciowe, funkcje synchronizacji między zadaniami i mnóstwo innych funkcji, które Java zapewnia standardowo. Główną zaletą małej biblioteki standardowej jest to, że znacznie łatwiej jest zapewnić środowisko pracy dla C ISO niż dla innych języków, a zatem przenoszenie aplikacji języka C na nowe platformy jest stosunkowo szybkie.
Wiele innych bibliotek zostało napisanych w celu rozwijania funkcjonalności równoważnych z funkcjami zapewnianymi przez inne języki w ich standardowej bibliotece. Na przykład proponowane środowisko graficzne GNOME opracowało Box Tools GIMP (GIMP ToolKit, GTK) i GLib , bibliotekę zawierającą kontenery struktur danych, a jest wiele innych znanych przykładów właściwości. Spośród tej różnorodności dostępnych bibliotek niektóre zestawy narzędzi z biegiem czasu wykazały lepsze możliwości. Główną wadą jest to, że często nie działają one szczególnie dobrze razem, programiści są często zmuszeni do żonglowania kilkoma różnymi bibliotekami, a niektóre funkcje mogą być obecne w różnych formach na każdej platformie, czasem nawet w tej samej. Ważne oprogramowanie.
Język programowania C ++ przejmuje funkcjonalność standardowej biblioteki ISO C, ale wprowadza kilka zmian, takich jak transformacja nazw nagłówków z <xxx.h>na <cxxx>(jednak nazwy w stylu C są nadal dostępne, chociaż nieaktualne) i umieść wszystkie identyfikatory w przestrzeni nazw (przestrzeni nazw) std.