C 库 - iswprint() 函数
C wctype 库中的 iswprint() 函数用于检查给定的宽字符(wint_t 类型)是否可以打印。
可打印字符包括数字 (0123456789)、大写字母 (ABCDEFGHIJKLMNOPQRSTUVWXYZ)、小写字母 (abcdefghijklmnopqrstuvwxyz)、标点符号 (!"#$%&'()*+,-./:;?@[\]^_`{|}~)、空格或任何特定于当前 C 语言环境的可打印字符。
此函数包含所有图形字符和空格字符。
语法
以下这是 iswprint() 函数的 C 库语法 -
int iswprint( wint_t ch );
参数
此函数接受单个参数 -
-
ch - 需要检查的是类型为"wint_t"的宽字符。
返回值
如果宽字符可以打印,此函数返回非零值,否则返回零。
示例 1
以下是演示 iswprint() 用法的基本 C 程序。
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
int main(void) {
// 将语言环境设置为"en_US.utf8"
setlocale(LC_ALL, "en_US.utf8");
wchar_t space = L' ';
// 检查字符是否可打印
int res = iswprint(space);
if (res) {
printf("The character ' ' is a printable character.
");
} else {
printf("The character ' ' is not a printable character.
");
}
return 0;
}
输出
以下是输出 -
The character ' ' is a printable character.
示例 2
让我们创建另一个 C 语言示例,并使用 iswprint() 函数来识别宽字符集中的可打印字符。
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
int main(void) {
// 使用"en_US.utf8"处理 Unicode 字符
setlocale(LC_ALL, "en_US.utf8");
// 宽字符数组,包含
// 可打印字符和不可打印字符
wchar_t character[] = {L'A', L' ', L'
', L'\u2028'};
size_t num_char = sizeof(character) / sizeof(character[0]);
// 检查并打印某个字符是否为可打印字符
printf("Checking printable characters:
");
for (size_t i = 0; i < num_char; ++i) {
wchar_t ch = character[i];
printf("Character '%lc' (%#x) is %s printable char
", ch, ch, iswprint(ch) ? "a" : "not a");
}
return 0;
}
输出
以下是输出 -
Checking printable characters: Character 'A' (0x41) is a printable char Character ' ' (0x20) is a printable char Character ' ' (0xa) is not a printable char Character ' ' (0x2028) is not a printable char
示例 3
以下 C 语言示例使用 iswprint() 函数检查特殊字符在 Unicode 语言环境中是否为可打印字符。
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
int main(void) {
// 使用"en_US.utf8"处理 Unicode 字符
setlocale(LC_ALL, "en_US.utf8");
wchar_t spclChar[] = {L'@', L'#', L'$', L'%'};
size_t num_char = sizeof(spclChar) / sizeof(spclChar[0]);
// 检查并打印一个字符是否为可打印字符
printf("Checking printable characters:
");
for (size_t i = 0; i < num_char; ++i) {
wchar_t ch = spclChar[i];
printf("Char '%lc' (%#x) is %s printable char
", ch, ch, iswprint(ch) ? "a" : "not a");
}
return 0;
}
输出
以下是输出 -
Checking printable characters: Char '@' (0x40) is a printable char Char '#' (0x23) is a printable char Char '$' (0x24) is a printable char Char '%' (0x25) is a printable char

