C 库 - iswpunct() 函数
C wctype 库中的 iswpunct() 函数用于检查给定的宽字符(wint_t 类型)是否为标点符号。
标点符号是指非字母数字且非空格的字符。它包含 !"#$%&'()*+,-./:;?@[\]^_`{|}~ 之一,或任何当前语言环境特有的标点符号。
语法
以下是 iswpunct() 函数的 C 库语法 -
int iswpunct( wint_t ch );
参数
此函数接受一个参数 -
-
ch - 需要检查的是类型为"wint_t"的宽字符。
返回值
如果宽字符是标点符号,否则为零。
示例 1
以下是演示 iswpunct() 用法的基本 C 程序。
#include <wctype.h> #include <wchar.h> #include <stdio.h> int main() { wchar_t wc = L'!'; if (iswpunct(wc)) { wprintf(L"'%lc' is a punctuation character. ", wc); } else { wprintf(L"'%lc' is not a punctuation character. ", wc); } return 0; }
输出
以下是输出 -
'!' is a punctuation character.
示例 2
让我们创建另一个 C 语言示例,并使用 iswpunct() 函数来判断数组中的每个字符是否为标点符号。
#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 wc[] = {L'!', L'"', L'A', L';'}; size_t size = sizeof(wc) / sizeof(wc[0]); // 检查并打印某个字符是否为标点符号 for (size_t i = 0; i < size; ++i) { wchar_t ch = wc[i]; printf("Character '%lc' (%#x) is %s punctuation char ", ch, ch, iswpunct(ch) ? "a" : "not a"); } return 0; }
输出
以下是输出 -
Character '!' (0x21) is a punctuation char Character '"' (0x22) is a punctuation char Character 'A' (0x41) is not a punctuation char Character ';' (0x3b) is a punctuation char
示例 3
此示例检查默认语言环境中的标点符号。
#include <locale.h> #include <stdio.h> #include <wchar.h> #include <wctype.h> int main(void) { // 默认语言环境 setlocale(LC_ALL, ""); // 宽字符数组 wchar_t wc[] = {L'!', L'"', L'A', L';', L'*'}; size_t size = sizeof(wc) / sizeof(wc[0]); // 检查并打印某个字符是否为标点符号 printf("Checking punctuation characters: "); for (size_t i = 0; i < size; ++i) { wchar_t ch = wc[i]; printf("Character '%lc' (%#x) is %s punctuation char ", ch, ch, iswpunct(ch) ? "a" : "not a"); } return 0; }
输出
以下是输出 -
Checking punctuation characters: Character '!' (0x21) is a punctuation char Character '"' (0x22) is a punctuation char Character 'A' (0x41) is not a punctuation char Character ';' (0x3b) is a punctuation char Character '*' (0x2a) is a punctuation char