| オブジェクト言語 |
| C++ – C# – D デルフィ – エッフェル – グルーヴィー Java – Lisaac – Python – Ruby シミュレーション – Smalltalk Visual Basic – W言語 |
| 命令型言語 |
| APL – ASP –アセンブラ BASIC – C – Cobol – Natural フォース – Fortran – リンボ ロゴ – パスカル – Perl – PHP |
| 関数型言語 |
| Haskell – ML/OCaml Lisp/Common Lisp スキーム – XSLT |
| 宣言型言語 |
| クリップ –プロローグ |
| 競合言語 |
| Ada 95 – アーラン |
| こちらも参照 |
| デザイン –コーディング テスト – 最適化 |
C標準ライブラリは、C 言語で入出力や文字列処理などの一般的な操作を実装するために使用されるヘッダーとルーチンの標準化されたコレクションです。Pascal や PL/I などの他の言語とは異なり、C にはキーワードが含まれていません。これらのタスクは、結果を表示するためだけであっても、C で書かれたほとんどすべてのプログラムが標準ライブラリを使用します。
建築
各関数の名前と署名 (C の「プロトタイプ」) はソース コードに含まれるヘッダーに記述されますが、関数のオブジェクト コードはソフトウェア ライブラリに分離され、残りの部分にのみリンクされます。リンク編集時のみプログラムを実行します。ヘッダ名と名前空間が共通になりました。ほとんどの場合、各ヘッダーは個別のファイルを構成しますが、実装の構成は依然として多様です。標準ライブラリは当初はコンパイラとともに提供されていましたが、現在ではオペレーティング システムの一部となっていることがよくあります。 Unixシステムでは、通常、 /usr/lib/ディレクトリにあり、 libc.aまたはlibc.soという名前が付けられます。ヘッダー ファイルは/usr/includeディレクトリにあります。ただし、コンパイラはこれらのファイルがどこにあるかを常に知っているため、コンパイラに通知する必要はありません。
Linuxでは、通常、 glibcライブラリが使用されます。 Windowsでは、これは通常MSVCR*.dllと呼ばれる標準 Visual C++ ライブラリです。これは、使用される C コンパイラに関係なく使用できるためです。 C コンパイラは ISO およびPOSIX C 標準で指定されている機能よりも多くの機能を提供することが多いため、特定のコンパイラで提供される標準ライブラリは、標準化されていない関数については他のコンパイラの標準ライブラリとの互換性が低くなります。
経験上、C 標準ライブラリの大部分は適切に設計されていることがわかっています。ただし、後から考えると誤りであると思われる部分もあります。 gets line 読み取り関数と、入力文字列を読み取るためのscanfの使用は、多くのバッファ オーバーフローの原因となるため、ほとんどのプログラミングガイドでは、これらの使用を避けることを推奨しています。もう 1 つの古いものはstrtokです。これは原始的な字句解析ツールとして設計された関数ですが、非常に「壊れやすく」、使用するのが困難です。

歴史
Unix と C プログラミング言語は、1970 年代初頭に AT&T とBell Laboratories (AT&T の Bell Laboratories) によって作成されました。初期の C 言語には、(Pascal や Fortran などの従来の言語とは異なり) I/O 操作などの組み込み機能がありませんでした。時間が経つにつれて、C ユーザー コミュニティは、これらの機能を提供するために、現在C 標準ライブラリと呼ばれているもののアイデアと実装を共有してきました。これらのアイデアの多くは、C プログラミング言語の標準化された定義に組み込まれています。
1970 年代に C が人気になりました。多くの大学や組織が、独自のプロジェクトのためにこの言語の独自のバリエーションを作成しています。 1980 年代に、C の異なる実装間の互換性の問題が発生しました。
ANSI および ISO 規格
1983 年に、米国規格協会(ANSI) は、「ANSI C」として知られる C の標準仕様を確立する委員会を設立しました。この取り組みは、1989 年の C89標準の作成で最高潮に達しました。その結果得られた標準の一部は、 ANSI C 標準ライブラリと呼ばれる一連のライブラリ関数でした。この規格は 1990 年に国際規格となり、ISO C (ISO C)としても知られています。
C ISO 標準のその後のリビジョンでは、新しい関数とヘッダーがライブラリに追加されました。これらの拡張機能のサポートは実装によって異なります。 iso646.h 、 wchar.h 、およびwctype.hヘッダーは、1995 年に批准された C 標準への追加を構成する規範修正1 (以下、 Amd.1と略します) で追加されました。 complex.h 、 fenv.h 、 inttypes.h 、 stdbool.h 、 stdint.h 、およびtgmath.hヘッダーは、1999 年に発行された C 標準のリビジョンである C99 で追加されました。
C ISO 標準ライブラリは、単純なディレクティブを使用してプログラマのプロジェクトに組み込むことができる 24 個のヘッダーで構成されています。各ヘッダーには、関数のプロトタイプ、型定義、およびマクロが含まれています。これらのヘッダーの内容については以下で説明します。
拡張機能
他の言語 (Java など) と比較すると、ISO C 標準ライブラリは小さいです。これは、ファイルと端末を処理する数学関数、文字列操作、型変換、入出力関数の基本セットを提供します。これには、C++ 標準テンプレート ライブラリのような「コンテナ タイプ」の標準ベースは含まれていません。グラフィカル環境 (グラフィカル ユーザーインターフェイス、GUI)、ネットワークツール、タスク間の同期機能、および Java が標準で提供するその他の豊富な機能は省略されています。小規模な標準ライブラリの主な利点は、他の言語よりも ISO C の作業環境を提供するのがはるかに簡単であるため、C 言語アプリケーションを新しいプラットフォームに移植するのが比較的迅速であることです。
他の多くのライブラリは、他の言語が標準ライブラリで提供する機能と同等の機能を開発するために作成されています。たとえば、 GNOMEデスクトップ プロジェクトは、 GIMP ToolKit (GTK) と、データ構造のコンテナを含むライブラリである glib を開発しました。他にも多くのよく知られた例があります。利用可能なこのようなさまざまなライブラリのうち、一部のツールボックスは時間の経過とともに優れた機能を示しています。主な欠点は、それらがあまりうまく連携しないことが多く、プログラマは複数の異なるライブラリをやりくりしなければならないことが多く、一部の機能が特定のプラットフォームごとに異なる形式で存在し、場合によっては 1 つの同じ重要なソフトウェア内に存在することもあります。

C ISO ライブラリヘッダー
assert.h : プログラムのデバッグ バージョンでデータの不整合やその他の種類のバグを検出するために使用されるassertマクロが含まれています。
complex.h : 複素数を処理します (C99 で導入)。
ctype.h : 文字を迅速に分類したり、使用される文字エンコード システム (文字セット) (ASCII、 ISO 8859-1 、EBCDIC など) に関係なく大文字と小文字を変換したりするために使用される関数。
errno.h : errno変数を介して標準ライブラリ関数によって返されるエラー コードのセット (またはほとんどの場合はサブセット)。
fenv.h : 浮動小数点環境を制御します (C99 によって導入されました)。
float.h : 2 つの異なる浮動小数点数間の最小差 (xxx_EPSILON)、最大精度桁数(xxx_DIG)、および浮動小数点数の実装依存のプロパティを指定する定数が含まれます。 (xxx_MIN、xxx_MAX) で表すことができます。
inttypes.h : 整数型間の正確な変換用 (C99 で導入)。
iso646.h : ISO 646文字セット (Amd.1 によって導入) を使用してプログラムします。
limits.h : 表現できる数値の範囲 (xxx_MIN、xxx_MAX) など、整数型の実装に依存するプロパティを指定する定数が含まれます。
locale.h : 異なる文化的慣習に適応するため。
math.h : 一般的な数学関数を計算します。 C99 では、特に IEEE 754 としても知られる IEC 559 標準に準拠するために、多くの数学関数が追加されました。
setjmp.h : 非ローカルのgoto命令 (例外の一種) を実行します。
signal .h :信号を制御します (即時処理が必要な例外条件、たとえばユーザー信号)。
stdarg.h : 可変数の引数を持つ関数を作成します。
stdbool.h : 一種のブール型を持ちます (C99 によって導入されました)。
stdint.h : さまざまな整数型を定義します。これは inttypes.h (C99 で導入) のサブセットです。
stddef.h : NULLなど、いくつかの便利な型とマクロを定義します。
stdio.h : printf関数など、C 言語の中心的な入出力機能を提供します。
stdlib.h : 変換、擬似乱数生成、メモリ割り当て、プロセス制御、環境と信号の管理、検索とソートを含むさまざまな操作を実行します。
string.h : 文字列を操作します。
tgmath.h : ジェネリック型の数学演算用 (C99 で導入)。
time.h : 異なる日付と時刻の形式間で変換します。
wchar.h : ワイド文字を処理するには、多数の言語、特にUnicode (Amd.1 によって導入) をサポートするために必要です。
wctype.h : ワイド文字を分類します (Amd.1 によって導入されました)。
C++の標準ライブラリ
C++ プログラミング言語は、C ISO 標準ライブラリの機能を継承していますが、ヘッダー名をxxx.hからcxxxに変更するなど、いくつかの変更が加えられています (ただし、C スタイルの名前は古いものではありますが、引き続き使用できます)。 std名前空間の識別子。

