C 库 - iswpunct() 函数

❮ C 标准库 - <wctype.h>


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

❮ C 标准库 - <wctype.h>