<wctype.h> -- 函数
阅读:0       作者:严长生

iswalnum() 判断一个宽字符是否是字母或数字

int iswalnum (wint_t wc);

iswalnum() 用来检测一个宽字符是否是字母或者十进制数字。

如果仅仅检测一个宽字符是否是字母,可以使用 iswalpha() 函数;如果仅仅检测一个宽字符是否是十进制数字,可以使用 iswdigit() 函数。

如果一个宽字符被 iswalpha() 或者 iswdigit() 检测后返回“真”,那么它也一定会被 iswalnum() 检测成功(返回“真”)。

iswalnum() 是 isalnum()(位于<ctype.h>中)的宽字符版本:如果参数 wc 能够被 wctob() 转换为单个字节的形式,并且转换后的字符使用 isalnum() 检测返回“真”(非零值),那么 iswalnum() 也一定会将 wc 判定为字母或十进制数字。

参数

  • wc

    要检测的宽字符。它可以是一个有效的宽字符(被转换为 wint_t 类型),也可以是 WEOF(表示无效的宽字符)。

返回值

返回值为非零(真)表示wc是字母或者十进制数字,返回值为零(假)表示wc既不是字母也不是十进制数字。

实例

检测一个字符串的开头有多少个字母和十进制数字。
#include <stdio.h>
#include <wctype.h>
#include <wchar.h>
int main ()
{
    int i;
    wchar_t str[] = L"c3po...";
    i=0;
    while (iswalnum(str[i])) i++;
    wprintf (L"The first %d characters are alphanumeric.n",i);
    return 0;
}
运行结果:
The first 4 characters are alphanumeric.

关于字母和十进制数字

一个宽字符是否是字母和程序的地域设置有关,在默认的地域设置(默认为"C")中,字母包含如下的字符:

a b c d e f g h i j k l m n o p q r s t u v w x y z  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

在其它的地域设置中,可能还会包含更多的字母,请查阅 iswalpha() 了解更多细节。

而对于十进制数字,不管在哪种地域设置中,它只能包含下面的字符:

0 1 2 3 4 5 6 7 8 9