- 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 库 - iswdigit() 函数
C 的wctype库的iswdigit()函数用于检查给定的宽字符(由wint_t表示)是否对应(如果缩窄)于10个十进制数字字符“012345678”中的一个。这是一个通用的函数,它独立于当前区域设置工作。
此函数可用于输入验证、字符分类、将字符转换为数值或实现自定义字符串到数字的转换。
“iswdigit”和“iswxdigit”是仅有的两个不受当前安装的C区域设置影响的标准宽字符函数。
语法
以下是iswdigit()函数的C库语法:
int iswdigit( wint_t ch )
参数
此函数接受单个参数:
-
ch − 这是一个要检查的类型为'wint_t'的宽字符。
返回值
如果宽字符是数字字符,则此函数返回非零值;否则返回零。
示例 1
以下是演示iswdigit()函数用法的基本C示例。
#include <wctype.h> #include <stddef.h> #include <wchar.h> int main() { // ASCII digit 3 wchar_t digit1 = L'3'; // CJK numeral 3 wchar_t digit2 = L'三'; // alphabetic letter a wchar_t digit3 = L'a'; // Using %d to print the integer result of iswdigit wprintf(L"%d\n", iswdigit(digit1)); wprintf(L"%d\n", iswdigit(digit2)); wprintf(L"%d\n", iswdigit(digit3)); return 0; }
输出
以下是输出:
1 0 0
示例 2
让我们使用iswdigit()函数创建一个另一个示例,以检查宽字符是否为数字,并将其转换为其数值。
#include <stdio.h> #include <wctype.h> #include <wchar.h> int wchar_to_digit(wchar_t wc) { if (iswdigit(wc)) { if (wc >= L'0' && wc <= L'9') { // Standard ASCII digits return wc - L'0'; } else if (wc >= L'0' && wc <= L'9') { // Full-width digits return wc - L'0'; } } // Handle special cases (CJK numerals) switch (wc) { case L'〇': return 0; case L'一': return 1; case L'二': return 2; case L'三': return 3; case L'四': return 4; case L'五': return 5; case L'六': return 6; case L'七': return 7; case L'八': return 8; case L'九': return 9; default: return -1; } } int main() { // ASCII digit 5 wchar_t digit1 = L'5'; // CJK numeral 7 wchar_t digit2 = L'七'; // Not a digit wchar_t digit3 = L'A'; wprintf(L"%d\n", wchar_to_digit(digit1)); wprintf(L"%d\n", wchar_to_digit(digit2)); wprintf(L"%d\n", wchar_to_digit(digit3)); }
输出
以下是输出:
5 7 -1
示例 3
在这里,我们创建一个C程序来显示给定宽字符的每个数字。
#include <stdio.h> #include <wctype.h> #include <wchar.h> int main() { wchar_t str[] = L"8252240532"; // Iterate over wide character for (int i = 0; str[i] != L'\0'; i++) { if (iswdigit(str[i])) { wprintf(L"%lc ", str[i]); } } return 0; }
输出
以下是输出:
8 2 5 2 2 4 0 5 3 2
c_library_wctype_h.htm
广告