- 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 庫 - wcstombs() 函式
C 的stdlib 庫 wcstombs() 函式用於將寬字元字串 (pwcs) 轉換為其多位元組字串 (str)。
此函式通常用於處理多種字元編碼的程式,尤其是在處理國際化和本地化時。
語法
以下是 wcstombs() 函式的 C 庫語法:
size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)
引數
此函式接受以下引數:
str − 表示指向目標陣列的指標,生成的多個位元組字串將儲存在此處。
pwcs − 表示要轉換的寬字元字串。
n − 表示要寫入 'str' 的最大位元組數。
返回值
此函式返回轉換為 str 並寫入 str 的位元組數(而不是字元數),不包括結尾的空字元。如果遇到無效的多位元組字元,則返回 -1。
示例 1
在此示例中,我們建立一個 C 程式來演示 wcstombs() 函式的使用。
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>
int main() {
setlocale(LC_ALL, "");
// Wide-character string
const wchar_t pwcs[] = L"Hello tutorialspoint";
// Buffer to hold the multibyte string
char mbstr[256];
// Convert wide-character string to multibyte string
size_t len = wcstombs(mbstr, pwcs, sizeof(mbstr));
if (len == (size_t)-1) {
printf("Conversion failed.\n");
} else {
printf("Converted multibyte string: %s\n", mbstr);
}
return 0;
}
輸出
以下是輸出:
Converted multibyte string: Hello tutorialspoint
示例 2
以下示例使用 wcstombs() 函式將寬字元字串轉換為多位元組字串序列。
#include <stdio.h>
#include <stdlib.h>
int main () {
size_t ret_val;
char *mbstr = (char *)malloc(50);
wchar_t *pwcs = L"https://tutorialspoint.tw";
// converting wide-character string to multi-byte
ret_val = wcstombs(mbstr, pwcs, 50);
printf("Characters converted = %lu\n", ret_val);
printf("Multibyte character = %s\n\n", mbstr);
return(0);
}
輸出
以下是輸出:
Characters converted = 30 Multibyte character = https://tutorialspoint.tw
示例 3
讓我們建立另一個示例,我們將包含不同特殊字元的寬字元字串使用 wcstombs() 函式轉換為多位元組字串。
#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, "");
// Wide-character string with special characters and emojis
const wchar_t pwcs[] = L"Welcome tutorialspoint @#-";
char mbstr[256];
// Convert wide-character string to multibyte string
size_t ret = wcstombs(mbstr, pwcs, sizeof(mbstr));
// If conversion failed
if (ret == (size_t)-1) {
printf("Conversion failed.\n");
} else {
// Conversion succeeded
printf("Converted multibyte string: %s\n", mbstr);
printf("Number of bytes written (excluding null terminator): %zu\n", ret);
}
return 0;
}
輸出
以下是輸出:
Converted multibyte string: Welcome tutorialspoint @#- Number of bytes written (excluding null terminator): 26
廣告