Cライブラリ関数 -wctomb()

C 标准库 - <stdlib.h>C標準ライブラリ - <stdlib.h>

説明

Cライブラリ関数int wctomb(char *str, wchar_t wchar)ワイド文字をwcharそのマルチバイト表現に変換し、それをstrstrが指す文字配列の先頭に格納します。

宣言

以下は wctomb() 関数の宣言です。

int wctomb(char *str, wchar_t wchar)

パラメータ

  • str-- マルチバイト文字を格納するのに十分な配列を指すポインタ。
  • wchar-- wchar_t 型のワイド文字。

戻り値

  • str が NULL でない場合、wctomb() 関数はバイト配列に書き込まれたバイト数を返します。wchar がマルチバイトシーケンスとして表現できない場合は -1 を返します。
  • str が NULL の場合、エンコーディングにシフト状態がある場合は wctomb() 関数は非ゼロを返し、エンコーディングがステートレスである場合はゼロを返します。

例

以下の例は、wctomb() 関数の使い方を示しています。

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int i;
   wchar_t wc = L'a';
   char *pmbnull = NULL;
   char *pmb = (char *)malloc(sizeof( char ));

   printf("要转换的宽字符:\n");
   i = wctomb( pmb, wc );
   printf("被转换的字符:%u\n", i);
   printf("多字节字符:%.1s\n", pmb);

   printf("当要转换的字符为 NULL 时尝试转换:\n");
   i = wctomb( pmbnull, wc );
   printf("被转换的字符:%u\n", i);
   /* 不会输出任何值 */
   printf("多字节字符:%.1s\n", pmbnull);
   
   return(0);
}

上記のプログラムをコンパイルして実行すると、次の結果が得られます。

要转换的宽字符:
被转换的字符:1
多字节字符:a
当要转换的字符为 NULL 时尝试转换:
被转换的字符:0
多字节字符:

C 标准库 - <stdlib.h>C標準ライブラリ - <stdlib.h>

その他の拡張