mbtowc

Run-Time   Library   Reference    
mbtowc,   _mbtowc_l    

Convert   a   multibyte   character   to   a   corresponding   wide   character.


int   mbtowc(
      wchar_t   *wchar,
      const   char   *mbchar,
      size_t   count  
);
int   _mbtowc_l(
      wchar_t   *wchar,
      const   char   *mbchar,
      size_t   count,
      _locale_t   locale
);

Parameters
wchar  
Address   of   a   wide   character   (type   wchar_t).

mbchar  
Address   of   a   sequence   of   bytes   (a   multibyte   character).

count  
Number   of   bytes   to   check.

locale  
The   locale   to   use.

Return   Value

If   mbchar   is   not   NULL   and   if   the   object   that   mbchar   points   to   forms   a   valid   multibyte   character,   mbtowc   returns   the   length   in   bytes   of   the   multibyte   character.   If   mbchar   is   NULL   or   the   object   that   it   points   to   is   a   wide-character   null   character   (L '/0 '),   the   function   returns   0.   If   the   object   that   mbchar   points   to   does   not   form   a   valid   multibyte   character   within   the   first   count   characters,   it   returns   –1.

Remarks

The   mbtowc   function   converts   count   or   fewer   bytes   pointed   to   by   mbchar,   if   mbchar   is   not   NULL,   to   a   corresponding   wide   character.   mbtowc   stores   the   resulting   wide   character   at   wchar,   if   wchar   is   not   NULL.   mbtowc   does   not   examine   more   than   MB_CUR_MAX   bytes.   mbtowc   uses   the   current   locale   for   locale-dependent   behavior;   _mbtowc_l   is   identical   except   that   it   uses   the   locale   passed   in   instead.

Requirements

Routine     Required   header     Compatibility    
mbtowc  
  <stdlib.h>
  ANSI,   Windows   95,   Windows   98,   Windows   98   Second   Edition,   Windows   Millennium   Edition,   Windows   Millennium   Edition,   Windows   NT   4.0,   Windows   2000,   Windows   XP   Home   Edition,   Windows   XP   Professional,   Windows   Server   2003
 
_mbtowc_l  
  <stdlib.h>
  ANSI,   Windows   95,   Windows   98,   Windows   98   Second   Edition,   Windows   Millennium   Edition,   Windows   Millennium   Edition,   Windows   NT   4.0,   Windows   2000,   Windows   XP   Home   Edition,   Windows   XP   Professional,   Windows   Server   2003
 

For   additional   compatibility   information,   see   Compatibility   in   the   Introduction.

Libraries
All   versions   of   the   C   run-time   libraries.

Example

  Copy   Code
//   crt_mbtowc.c
/*   Illustrates   the   behavior   of   the   mbtowc   function
  */

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

int   main(   void   )
{
        int             i;
        char         *pmbc         =   (char   *)malloc(   sizeof(   char   )   );
        wchar_t     wc             =   L 'a ';
        wchar_t   *pwcnull   =   NULL;
        wchar_t   *pwc           =   (wchar_t   *)malloc(   sizeof(   wchar_t   )   );
        printf(   "Convert   a   wide   character   to   multibyte   character:/n "   );
        wctomb_s(   &i,   pmbc,   sizeof(char),   wc   );
        printf(   "     Characters   converted:   %u/n ",   i   );
        printf(   "     Multibyte   character:   %x/n/n ",   *pmbc   );

        printf(   "Convert   multibyte   character   back   to   a   wide   "
                        "character:/n "   );
        i   =   mbtowc(   pwc,   pmbc,   MB_CUR_MAX   );
        printf(   "     Bytes   converted:   %u/n ",   i   );
        printf(   "     Wide   character:   %x/n/n ",   *pwc   );
        printf(   "Attempt   to   convert   when   target   is   NULL/n "   );
        printf(   "     returns   the   length   of   the   multibyte   character:/n "   );
        i   =   mbtowc(   pwcnull,   pmbc,   MB_CUR_MAX   );
        printf(   "     Length   of   multibyte   character:   %u/n/n ",   i   );

        printf(   "Attempt   to   convert   a   NULL   pointer   to   a "   );
        printf(   "   wide   character:/n "   );
        pmbc   =   NULL;
        i   =   mbtowc(   pwc,   pmbc,   MB_CUR_MAX   );
        printf(   "     Bytes   converted:   %u/n ",   i   );
}
Output

Convert   a   wide   character   to   multibyte   character:
    Characters   converted:   1
    Multibyte   character:   61

Convert   multibyte   character   back   to   a   wide   character:
    Bytes   converted:   1
    Wide   character:   61

Attempt   to   convert   when   target   is   NULL
    returns   the   length   of   the   multibyte   character:
    Length   of   multibyte   character:   1

Attempt   to   convert   a   NULL   pointer   to   a   wide   character:
    Bytes   converted:   0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值