国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > wctype.h 以获得更好的体验。

# C 语言标准库头文件 wctype.h

请查看 C 语言标准库头文件列表 了解更多相关 API。

这个头文件提供 字符类型检测 的相关功能,例如判断一个字符是否是字母、数字或标点符号等,并可以对字母进行大小写转换。

# 类型

类型 标准 说明
wint_t C95 可以保存任何有效宽字符和至少一个其他值的整数类型
wctrans_t C95 保存特定于语言环境的字符映射的标量类型
wctype_t C95 保存特定于语言环境的字符分类的标量类型

#

类型 标准 说明
WEOF C95 用于指示错误的 wint_t 类型的非字符值

# 函数

函数 标准 说明
iswalnum C95 判断宽字符是否是字母或数字
iswalpha C95 判断宽字符是否是字母
iswlower C95 判断宽字符是否是小写字母
iswupper C95 判断宽字符是否是大写字母
iswdigit C95 判断宽字符是否是数字
iswxdigit C95 判断宽字符是否是十六进制数字
iswcntrl C95 判断宽字符是否是控制字符
iswgraph C95 判断宽字符是否是可显示字符,包含数字、字母、标点符号
iswspace C95 判断宽字符是否是空白(white-space)字符,包含空格、水平制表符、竖直制表符、回车符、换行符、换页符
iswblank C99 判断宽字符是否是空白(blank)字符,空格、水平制表符
iswprint C95 判断宽字符是否是可打印字符,包含数字、字母、标点符号、空白
iswpunct C95 判断宽字符是否是标点符号
towlower C95 将宽字符转换为小写字母
towupper C95 将宽字符转换为大写字母
towctrans C95 根据指定的 LC_CTYPE 映射类别执行字符映射
wctrans C95 在当前 C 语言环境中查找字符映射类别

# 推荐阅读

# 示例

#include <stdio.h>
#include <locale.h> // 设置语言环境
#include <wchar.h>  // 宽字符输入、输出
#include <wctype.h>

int main(void) {
    // 设置语言环境
    if (setlocale(LC_ALL, "zh_CN.UTF-8") == NULL)
    {
        fprintf(stderr, "语言环境设置失败\n"); // 语言环境设置失败,只能使用 printf 打印
        return 1;
    }

    wchar_t ch;
    wprintf(L"请输入一个字符: ");
    wscanf(L"%lc", &ch);
    
    // 检查字符类型
    wprintf(L"\n字符 '%lc' 的类型判断:\n", ch);
    wprintf(L"iswalnum(): %s\n", iswalnum(ch) ? "是" : "否");  // 字母或数字
    wprintf(L"iswalpha(): %s\n", iswalpha(ch) ? "是" : "否");  // 字母
    wprintf(L"iswdigit(): %s\n", iswdigit(ch) ? "是" : "否");  // 数字
    wprintf(L"iswlower(): %s\n", iswlower(ch) ? "是" : "否");  // 小写字母
    wprintf(L"iswupper(): %s\n", iswupper(ch) ? "是" : "否");  // 大写字母
    wprintf(L"iswspace(): %s\n", iswspace(ch) ? "是" : "否");  // 空白字符
    wprintf(L"iswpunct(): %s\n", iswpunct(ch) ? "是" : "否");  // 标点符号
    wprintf(L"iswprint(): %s\n", iswprint(ch) ? "是" : "否");  // 可打印字符
    wprintf(L"iswgraph(): %s\n", iswgraph(ch) ? "是" : "否");  // 可显示字符(非空格)
    wprintf(L"iswcntrl(): %s\n", iswcntrl(ch) ? "是" : "否");  // 控制字符
    
    // 字符转换
    wprintf(L"\n字符 '%lc' 的转换结果:\n", ch);
    wprintf(L"towlower(): %lc\n", towlower(ch));  // 转换为小写
    wprintf(L"towupper(): %lc\n", towupper(ch));  // 转换为大写
    
    return 0;
}

说明:

这个示例首先通过 setlocale 将语言环境设为 zh_CN.UTF-8,然后提示输入一个字符,最后对该字符进行类型判断和大小写转换。

setlocale 失败时,使用 fprintf 而非 fwprintf 打印错误信息;这是因为没有设置正确的语言环境时,wprintf 系列函数无法使用。

运行结果:

请输入一个字符: 我

字符 '我' 的类型判断:
iswalnum(): 是
iswalpha(): 是
iswdigit(): 否
iswlower(): 否
iswupper(): 否
iswspace(): 否
iswpunct(): 否
iswprint(): 是
iswgraph(): 是
iswcntrl(): 否

字符 '我' 的转换结果:
towlower(): 我
towupper(): 我

请输入一个字符: a 字符 'a' 的类型判断: iswalnum(): 是 iswalpha(): 是 iswdigit(): 否 iswlower(): 是 iswupper(): 否 iswspace(): 否 iswpunct(): 否 iswprint(): 是 iswgraph(): 是 iswcntrl(): 否 字符 'a' 的转换结果: towlower(): a towupper(): A
请输入一个字符: 8 字符 '8' 的类型判断: iswalnum(): 是 iswalpha(): 否 iswdigit(): 是 iswlower(): 否 iswupper(): 否 iswspace(): 否 iswpunct(): 否 iswprint(): 是 iswgraph(): 是 iswcntrl(): 否 字符 '8' 的转换结果: towlower(): 8 towupper(): 8
本文 更新于: 2025-11-27 09:38:07 创建于: 2025-11-27 09:38:07