- 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
广告