C-standard-library-c-function-wctomb

提供:Dev Guides
移動先:案内検索

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

説明

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

宣言

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

int wctomb(char *str, wchar_t wchar)

パラメーター

  • str -これは、マルチバイト文字を保持するのに十分な大きさの配列へのポインタです。
  • wchar -これはwchar_t型のワイド文字です。

戻り値

  • strがNULLでない場合、wctomb()関数はstrのバイト配列に書き込まれたバイト数を返します。 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("Converting wide character:\n");
   i = wctomb( pmb, wc );
   printf("Characters converted: %u\n", i);
   printf("Multibyte character: %.1s\n", pmb);

   printf("Trying to convert when target is NULL:\n");
   i = wctomb( pmbnull, wc );
   printf("Characters converted: %u\n", i);
  /*this will not print any value*/
   printf("Multibyte character: %.1s\n", pmbnull);

   return(0);
}

次の結果を生成する上記のプログラムをコンパイルして実行しましょう-

Converting wide character:
Characters converted: 1
Multibyte character: a
Trying to convert when target is NULL:
Characters converted: 0
Multibyte character: