glibc 知:手册04:字符处理

这篇博客介绍了C语言中处理字符和字符串的方法,特别是字符分类和大小写转换。文章详细阐述了ctype.h头文件中的函数,如isalpha、isdigit等,以及宽字符的处理,包括wctype_t和wctrans_t类型,以及iswctype和towctrans函数。内容涵盖了字符分类、大小写转换、宽字符的特性及其在不同语言环境下的行为。

1. 前言

The GNU C Library Reference Manual for version 2.35

2. 字符处理

Character Handling

处理字符和字符串的程序通常需要对字符进行分类——它是字母、数字、空格等等——并对字符执行大小写转换操作。为此目的提供了头文件 ctype.h 中的函数。

由于语言环境和字符集的选择可以改变特定字符代码的分类,所有这些功能都会受到当前语言环境的影响。(更准确地说,它们受当前为字符分类选择的语言环境的影响——LC_CTYPE 类别;请参阅语言环境类别)。

ISO C 标准规定了两组不同的功能。一组适用于 char 类型字符,另一组适用于 wchar_t 宽字符(请参阅扩展字符简介)。

2.1. 字符分类

Classification of Characters

本节介绍用于对字符进行分类的库函数。例如,isalpha 是测试字母字符的函数。它接受一个参数,即要测试的字符,如果字符是字母,则返回一个非零整数,否则返回零。你会像这样使用它:

if (isalpha (c))
  printf ("The character `%c' is alphabetic.\n", c);

本节中的每个函数都测试特定字符类别的成员资格;每个都有一个以“is”开头的名称。它们中的每一个都接受一个参数,这是一个要测试的字符,并返回一个被视为布尔值的 int。字符参数作为 int 传递,它可能是常量值 EOF 而不是真正的字符。

任何给定字符的属性都可能因语言环境而异。有关语言环境的更多信息,请参阅语言环境和国际化

这些函数在头文件 ctype.h 中声明。

函数:int islower (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是小写字母,则返回 true。字母不必来自拉丁字母,任何可表示的字母都是有效的。

函数:int isupper (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是大写字母,则返回 true。字母不必来自拉丁字母,任何可表示的字母都是有效的。

函数:int isalpha (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是字母字符(字母),则返回 true。如果 islower 或 isupper 对一个字符为真,那么 isalpha 也为真。

在某些语言环境中,可能存在 isalpha 为真的其他字符——既不是大写也不是小写的字母。但是在标准的“C”语言环境中,没有这样的附加字符。

函数:int isdigit (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是十进制数字(“0”到“9”),则返回 true。

函数:int isalnum (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是字母数字字符(字母或数字),则返回 true;换句话说,如果 isalpha 或 isdigit 对一个字符为真,那么 isalnum 也为真。

函数:int isxdigit (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是十六进制数字,则返回 true。十六进制数字包括正常的十进制数字“0”到“9”以及字母“A”到“F”和“a”到“f”。

函数:int ispunct (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是标点符号,则返回 true。这意味着任何不是字母数字或空格字符的打印字符。

函数:int isspace (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是空白字符,则返回 true。在标准的“C”语言环境中,isspace 仅对标准空白字符返回 true:

' '     空格
'\F'    换页
'\n'    新行
'\r'    回车
'\t'    水平制表符
'\v'    垂直制表符

函数:int isblank (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是空白字符,则返回 true;即空格或制表符。该功能最初是 GNU 扩展,但在 ISO C99 中添加。

函数:int isgraph (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是图形字符,则返回 true;也就是说,一个字符与一个字形相关联。空白字符不被视为图形。

函数:int isprint (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是打印字符,则返回 true。打印字符包括所有图形字符,加上空格(’ ')字符。

函数:int iscntrl (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是控制字符(即不是打印字符的字符),则返回 true。

函数:int isascii (int c)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

如果 c 是适合美国/英国 ASCII 字符集的 7 位无符号字符值,则返回 true。该函数是 BSD 扩展

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

canpool

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值