mbtowc

提供: RAD Studio
移動先: 案内検索

stdlib.h:インデックス への移動


ヘッダーファイル

stdlib.h

カテゴリ

変換ルーチン,メモリおよび文字列操作ルーチン

プロトタイプ

int mbtowc(wchar_t *pwc, const char *s, size_t n);

説明

マルチバイト文字を wchar_t コードに変換します。

s が NULL でない場合,mbtowc は,s が指すマルチバイト文字を構成するバイト数を判定します。次に,mbtowc は,そのマルチバイト文字に対応する wchar_t 型の値を判定します。マルチバイト文字に一致する wchar_t が見つかり,pwc が NULL でない場合は,pwc が指す配列に wchar_t 型の値が格納されます。最大 n 文字までが確認されます。

戻り値

s が無効なマルチバイト文字を指す場合は,-1 が返されます。s がヌル文字を指す場合は,0 が返されます。その他の場合,mbtowc は,変換後のマルチバイト文字を構成するバイト数を返します。

戻り値が MB_CUR_MAX または n の値を超えることはありません。



 #include <stdlib.h>
 #include<stdio.h>
 void main(void)
 {
   int     x;
   char     *mbchar    = (char *)calloc(1, sizeof( char));
   wchar_t  wchar      = L'a';
   wchar_t   *pwcnull = NULL;
   wchar_t  *pwchar    = (wchar_t *)calloc(1,  sizeof( wchar_t ));
   printf ("Convert a wide character to multibyte character:\n");
   x = wctomb( mbchar, wchar);
   printf( "\tCharacters converted: %u\n", x);
   printf( "\tMultibyte character: %x\n\n", mbchar);
   printf ("Convert multibyte character back to a wide character:\n");
   x = mbtowc( pwchar, mbchar, MB_CUR_MAX );
   printf( "\tBytes converted: %u\n", x);
   printf( "\tWide character: %x\n\n", pwchar);
   printf ("Atempt to convert when target is NULL\n" );
   printf (" returns the length of the multibyte character:\n" );
   x = mbtowc (pwcnull, mbchar, MB_CUR_MAX );
   printf ( "\tlength of multibyte character:%u\n\n", x );
   printf ("Attempt to convert a NULL pointer to a" );
   printf (" wide character:\n" );
   mbchar = NULL;
   x = mbtowc (pwchar, mbchar, MB_CUR_MAX);
   printf( "\tBytes converted: %u\n", x );
   }



移植性



POSIX Win32 ANSI C ANSI C++

+

+

+

+