C 库 - iswxdigit() 函数

❮ C 标准库 - <wctype.h>


C wctype 库中的 iswxdigit() 函数用于检查给定的宽字符(用 wint_t 表示)是否对应(如果缩小)十六进制数字字符,例如"0123456789ABCDEF"中的一个。

此函数可用于输入验证、解析十六进制数字、数据清理或语法高亮。

"iswdigit"和"iswxdigit"是仅有的两个不受当前安装的 C 语言环境影响的标准宽字符函数。

语法

以下是 iswxdigit() 函数的 C 库语法−

int iswxdigit( wint_t ch )

参数

此函数接受单个参数 −

  • ch − 需要检查的是"wint_t"类型的宽字符。

返回值

如果宽字符是十六进制数字字符,此函数返回非零值,否则返回零。

示例 1

以下是演示 iswxdigit() 函数用法的基本 C 语言示例。

#include <wctype.h>
#include <stddef.h>
#include <wchar.h>
int main()
{
   wchar_t ch = L'F';
   if (iswxdigit(ch)) {
      // 该字符是有效的十六进制数字(0-9、a-f、A-F)
      wprintf(L"%lc is a valid hexadecimal digit.
", ch);
   } else {
      wprintf(L"%lc is not a valid hexadecimal digit.
", ch);
   }
}

输出

以下是输出 -

F is a valid hexadecimal digit.

示例 2

我们创建一个 C 程序,并使用 is digit() 来检查十六进制数字字符是否有效。

#include <wctype.h>
#include <stddef.h>
#include <wchar.h>
int main()
{
   const wchar_t *hexString = L"3A4f";
   while (*hexString) {
      if (!iswxdigit(*hexString)) {
         wprintf(L"Invalid hexadecimal string.
");
         return 1;
      }
      hexString++;
   }
   wprintf(L"Valid hexadecimal string.
");
}

输出

以下是输出 -

Valid hexadecimal string.

示例 3

让我们创建另一个 C 程序,从用户输入或数据流中过滤掉非十六进制字符。

#include <wctype.h>
#include <stddef.h>
#include <wchar.h>
int main() {
   const wchar_t *input = L"123GHI456";
   wchar_t sanitized[100];
   int j = 0;
   
   for (int i = 0; input[i] != L'\0'; i++) {
     if (iswxdigit(input[i])) {
       sanitized[j++] = input[i];
     }
   }
   sanitized[j] = L'\0';
   wprintf(L"Sanitized hexadecimal string: %ls
", sanitized);
}

输出

以下是输出 -

Sanitized hexadecimal string: 123456

❮ C 标准库 - <wctype.h>