- 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 库 - 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.com"; // 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.com
示例 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
广告