當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 mbtowc用法及代碼示例


C語言stdlib頭文件(stdlib.h)中mbtowc函數的用法及代碼示例。

用法:

int mbtowc (wchar_t* pwc, const char* pmb, size_t max);
將多字節序列轉換為寬字符
所指向的多字節字符pmb轉換為類型的值wchar_t並存儲在所指向的位置pwc。該函數返回多字節字符的長度(以字節為單位)。

mbtowc有自己的內部換檔狀態,隻有在調用此函數時才需要進行更改。使用空指針pmb重置狀態(並返回多字節字符是否為state-dependent)。

此函數的行為取決於LC_CTYPE所選類別C語言環境

參數

pwc
指向類型的對象的指針wchar_t
或者,此參數可以是空指針,在這種情況下,該函數不會存儲wchar_t翻譯,但仍返回多字節字符的字節長度。
pmb
指向多字節字符的第一個字節的指針。
或者,此參數可以是空指針,在這種情況下,該函數會將其內部移位狀態重置為初始值,並返回多字節字符是否具有state-dependent編碼。
max
最大字節數pmb考慮使用多字節字符。
不多於MB_CUR_MAX在任何情況下都將檢查字符。
size_t是無符號整數類型。

返回值

如果參數傳遞為pmb不是一個空指針,由所指向的多字節字符的大小(以字節為單位)pmb當它形成有效的多字節字符而不是終止空字符。如果是終止空字符,該函數將返回零,並且在它們不構成有效的多字節字符的情況下,-1返回。

如果參數傳遞為pmb是一個空指針,如果多字節字符編碼為state-dependent,則該函數返回非零值,否則返回零。

示例

/* mbtowc example */
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* mbtowc, wchar_t(C) */

void printbuffer (const char* pt, size_t max)
{
  int length;
  wchar_t dest;

  mbtowc (NULL, NULL, 0);  /* reset mbtowc */

  while (max>0) {
    length = mbtowc(&dest,pt,max);
    if (length<1) break;
    printf ("[%lc]",dest);
    pt+=length; max-=length;
  }
}

int main()
{
  const char str [] = "mbtowc example";

  printbuffer (str,sizeof(str));

  return 0;
}


printbuffer按字符打印多字節字符串。

該示例使用一個瑣碎的字符串"C"語言環境,但是該函數支持解釋多字節字符串的語言環境。

輸出:

[m][b][t][o][w][c][ ][e][x][a][m][p][l][e]



相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C mbtowc function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。