wcrtomb

ワイド文字 (wide character) を多バイト文字 (multibyte character) に変換します.

#include <wchar.h>
size_t wcrtomb (
    char * restrict s,
    wchar_t wc,
    mbstate_t * restrict ps
);

wcrtomb 関数は,まず wc で指定されるワイド文字に対応する多バイト文字を表現するために必要なバイト数 (シフトシーケンスを含める) を決定します.その後 s にその多バイト表現を格納します.※1

wc がナルワイド文字 (null wide character) の場合,ナル文字 ('\0') に変換します.この場合は変換状態 ps は初期変換状態になります.

wcrtomb 関数の動作は,その時点のロケール (locale) の LC_CTYPE カテゴリの影響を受けます.

引数

  • s: 多バイト文字へのポインタ (変換後の多バイト文字が格納されます)
  • wc: 変換するワイド文字
  • ps: 変換状態

戻り値

  • 成功時: s に格納したバイト数 (シフトシーケンスを含みます)
  • 失敗時: (size_t)(-1) ※2

※1: 配列 s に格納するバイト数 MB_CUR_MAX マクロのバイトを超えません.

※2: errno に EILSEQマクロの値を格納します.また変換状態 ps がどうなるかは未規定です.

Cプログラマの必読書

たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

C実践プログラミング 第3版

C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.