
- C 標準庫
- C 庫 - 首頁
- C 庫 - <assert.h>
- C 庫 - <complex.h>
- C 庫 - <ctype.h>
- C 庫 - <errno.h>
- C 庫 - <fenv.h>
- C 庫 - <float.h>
- C 庫 - <inttypes.h>
- C 庫 - <iso646.h>
- C 庫 - <limits.h>
- C 庫 - <locale.h>
- C 庫 - <math.h>
- C 庫 - <setjmp.h>
- C 庫 - <signal.h>
- C 庫 - <stdalign.h>
- C 庫 - <stdarg.h>
- C 庫 - <stdbool.h>
- C 庫 - <stddef.h>
- C 庫 - <stdio.h>
- C 庫 - <stdlib.h>
- C 庫 - <string.h>
- C 庫 - <tgmath.h>
- C 庫 - <time.h>
- C 庫 - <wctype.h>
- C 標準庫資源
- C 庫 - 快速指南
- C 庫 - 有用資源
- C 庫 - 討論
- C 程式設計資源
- C 程式設計 - 教程
- C - 有用資源
C 庫 - mbtowc() 函式
C 的stdlib庫的mbtowc()函式用於將'str'指向的多位元組字元字串轉換為其寬字元表示形式。此函式與“mbstowcs”相同。
轉換後的字元儲存在'pwc'指向的陣列的連續元素中。
目標陣列最多隻能容納 n 個寬字元。
語法
以下是mbtowc()函式的 C 庫語法 -
int mbtowc(whcar_t *pwc, const char *str, size_t n)
引數
此函式接受以下引數 -
pwc - 它表示指向 wchar_t 元素陣列的指標,該陣列足夠長,可以儲存最多 n 個字元的寬字串。
str - 它表示指向需要轉換的空終止多位元組字串的第一個元素的指標。
n - 它表示'pwc'指向的陣列中存在的最大 wchar_t 字元數。
返回值
此函式返回轉換的字元數,不包括空字元。如果找到無效的多位元組字元,則返回 -1。
示例 1
在此示例中,我們建立了一個基本的 c 程式來演示mbtowc()函式的使用。
#include <stdio.h> #include <stdlib.h> #include <wchar.h> void mbtowc_func(const char *ptr, size_t max) { int length; wchar_t dest_arr; // Reset mbtowc internal state mbtowc(NULL, NULL, 0); while (max > 0) { length = mbtowc(&dest_arr, ptr, max); if (length < 1) { break; } // Print each character in square braces printf("[%lc]", dest_arr); ptr += length; max -= length; } } int main() { const char str[] = "tutorialspoint India"; mbtowc_func(str, sizeof(str)); return 0; }
輸出
以下是輸出 -
[t][u][t][o][r][i][a][l][s][p][o][i][n][t][ ][I][n][d][i][a]
示例 2
以下 c 示例使用mbtowc()函式將多位元組字串轉換為寬字元字串。
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <wchar.h> int main() { // Set the locale to handle multibyte characters setlocale(LC_ALL, ""); const char mbString[] = "This is tutorialspoint.com"; wchar_t wideChar; size_t i; for (i = 0; i < sizeof(mbString);) { int length = mbtowc(&wideChar, &mbString[i], MB_CUR_MAX); if (length > 0) { // Print each wide character in square braces wprintf(L"[%lc]", wideChar); i += length; } else { break; } } return 0; }
輸出
以下是輸出 -
[T][h][i][s][ ][i][s][ ][t][u][t][o][r][i][a][l][s][p][o][i][n][t][.][c][o][m]
示例 3
讓我們再建立一個示例,使用mbtowc()函式將無效的多位元組序列轉換為寬字元。
#include <stdio.h> #include <stdlib.h> #include <wchar.h> #include <locale.h> int main() { // Set the locale to the user's default locale setlocale(LC_ALL, ""); // An invalid multibyte sequence const char *invalid_mb_str = "\xC3\x28"; wchar_t ptr; int len; len = mbtowc(&ptr, invalid_mb_str, MB_CUR_MAX); if (len == -1) { printf("Invalid multibyte sequence.\n"); } else { printf("Converted wide character: %lc\n", ptr); } return 0; }
輸出
以下是輸出 -
Invalid multibyte sequence.
廣告