- 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 程式設計資源
- 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
廣告