C isxdigit() 语法
isxdigit() 是 C 语言 <ctype.h> 标准库的一个函数,用于判断给定的字符是否是十六进制数字。
其中,十六进制数字包括以下 2 种:
- 十进制数字:'0'~'9'。
- 英文字母(包含大小写):'a'~'f' 和 'A'~'F'。
语法:
isxdigit(c)说明:
isxdigit() 函数接收单个参数。
c (int):是一个字符。虽然是 int 类型,但它的值必须能够表示为一个 unsigned char,或者等于 EOF。
isxdigit() 函数会返回一个 int 类型的值,来表示判断结果。
- 如果参数 c 是一个十六进制数字 ('0'~'9'、'a'~'f'、'A'~'F'),则返回一个非零值(表示 “真”)。
- 否则,返回 0(表示 “假”)。
提示: isxdigit 是 “is hexadecimal digit” 的缩写。
C isxdigit() 摘要
| 使用频率 | 中 |
|---|---|
| 修改字符串 | 否 |
| 官方文档 | 查看 |
C isxdigit() 示例
接下来,我们通过几个简单的例子来讲解一下 C isxdigit() 函数是如何使用的。
示例 1:isxdigit() 判断十六进制数字
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch1 = 'b';
char ch2 = 'E';
char ch3 = '9';
if (isxdigit(ch1)) {
printf("'%c' 是十六进制数字。\n", ch1);
} else {
printf("'%c' 不是十六进制数字。\n", ch1);
}
if (isxdigit(ch2)) {
printf("'%c' 是十六进制数字。\n", ch2);
} else {
printf("'%c' 不是十六进制数字。\n", ch2);
}
if (isxdigit(ch3)) {
printf("'%c' 是十六进制数字。\n", ch3);
} else {
printf("'%c' 不是十六进制数字。\n", ch3);
}
return 0;
}运行结果如下。
'b' 是十六进制数字。
'E' 是十六进制数字。
'9' 是十六进制数字。分析:
如果参数是 '0'~'9'、'a'~'f'、'A'~'F' 范围内的字符,则 isxdigit 会返回一个非零值(表示 “真”)。
示例 2:isxdigit() 判断非十六进制数字字符
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch1 = 'G';
char ch2 = '*';
char ch3 = ' ';
if (isxdigit(ch1)) {
printf("'%c' 是十六进制数字。\n", ch1);
} else {
printf("'%c' 不是十六进制数字。\n", ch1);
}
if (isxdigit(ch2)) {
printf("'%c' 是十六进制数字。\n", ch2);
} else {
printf("'%c' 不是十六进制数字。\n", ch2);
}
if (isxdigit(ch3)) {
printf("'%c' 是十六进制数字。\n", ch3);
} else {
printf("'%c' 不是十六进制数字。\n", ch3);
}
return 0;
}运行结果如下。
'G' 不是十六进制数字。
'*' 不是十六进制数字。
' ' 不是十六进制数字。分析:
如果参数是除了 '0'~'9'、'a'~'f'、'A'~'F' 范围以外的字符,则 isxdigit 会返回 0 (表示 “假”)。
示例 3:isxdigit() 处理 EOF
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int result;
result = isxdigit(EOF);
printf("%d\n", result);
return 0;
}运行结果如下。
0分析:
如果参数是 EOF,那么 isxdigit() 会返回 0。
深入了解 isxdigit()
isxdigit() 函数的行为通常 “不受” 当前区域设置 (locale) 的影响,它只会将 '0'~'9'、'a'~'f'、'A'~'F' 等识别为十六进制数字。
需要注意的是,虽然 isxdigit() 的参数 c 写的是 int 类型,但我们必须传入一个字符(比如 'a'、'B' 等),或者输入特殊的 EOF 值(常用于文件结束判断)。如果传入一个负数(除了 EOF),则可能会导致未定义行为。
