文字および文字列の処理に使用する文字コードは、2 つのグループに分類できます。
ファイルコードは、テキストデータの交換とファイルへの格納に使用されます。基盤のシステムに関係なく、ビッグエンディアンという固定のバイトオーダーが使用されています。UTF-8、EUC、シングルバイトコードセット、BIG5、Shift-JIS、PCK、GBK、GB18030 などのコードセットがこのカテゴリに含まれます。このセクションで関数を説明する文脈では、現在のロケールのコードセットがシングルバイトコードセットの場合でも、マルチバイト文字という用語がこのコードセットを指す一般的な用語になります。
プロセスコードは内部処理に使用される文字の固定幅の表現です。ここではプラットフォームのネイティブのバイトオーダーが使用されており、ビッグエンディアンまたはリトルエンディアンの場合があります。UTF-32、UCS-2、UCS-4 などのエンコーディングはワイド文字のエンコーディングになることがあります。
マルチバイトデータとワイド文字データ間の変換が必要になることはよくあります。プログラムがファイルから入力を取得すると、fscanf() や fwscanf() などの入力関数を使用するか、入力後に mbtowc() や mbsrtowcs() などの変換関数を使用して、ファイル内のマルチバイトデータがワイド文字のプロセスコードに変換されます。ワイド文字形式からマルチバイト文字形式に出力データを変換するには、fwprintf() や fprintf() などの出力関数を使用するか、出力前に wctomb() や wcsrtombs() などの変換関数を適用します。
次の各セクションでは、文字、ワイド文字、対応するデータ型を処理するための関数について説明します。