C isdigit() 语法
isdigit() 是 C 语言 <ctype.h> 标准库的一个函数,用于检查给定的字符是否是数字(0~9)。
语法:
isdigit(c)说明:
isdigit() 函数接收单个参数。
c(int):是一个字符。虽然是 int 类型,但它的值必须能够表示为一个 unsigned char,或者等于 EOF。
isdigit() 函数会返回一个 int 类型的值,来表示检查结果。
- 如果参数 c 是一个十进制数字 ('0' ~ '9'),则返回一个非零值(表示 “真”)。
- 否则,返回 0(表示 “假”)。
提示: toupper 指的是 “to upper(转换为大写)”。
C isdigit() 摘要
| 使用频率 | 高 |
|---|---|
| 修改字符串 | 否 |
| 官方文档 | 查看 |
C isdigit() 示例
接下来,我们通过几个简单的例子来讲解一下 C isdigit() 函数是如何使用的。
示例 1:isdigit() 检查数字字符
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch1 = '0';
char ch2 = '6';
char ch3 = '9';
if (isdigit(ch1)) {
printf("'%c' 是数字。\n", ch1);
} else {
printf("'%c' 不是数字。\n", ch1);
}
if (isdigit(ch2)) {
printf("'%c' 是数字。\n", ch2);
} else {
printf("'%c' 不是数字。\n", ch2);
}
if (isdigit(ch3)) {
printf("'%c' 是数字。\n", ch3);
} else {
printf("'%c' 不是数字。\n", ch3);
}
return 0;
}运行结果如下。
'0' 是数字。
'6' 是数字。
'9' 是数字。分析:
如果参数是十进制数字字符('0' 到 '9'),则 isdigit() 会返回一个非零值(真)。
示例 2:isdigit() 判断非数字字符
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch1 = 'A';
char ch2 = '$';
char ch3 = ' ';
if (isdigit(ch1)) {
printf("'%c' 是数字。\n", ch1);
} else {
printf("'%c' 不是数字。\n", ch1);
}
if (isdigit(ch2)) {
printf("'%c' 是数字。\n", ch2);
} else {
printf("'%c' 不是数字。\n", ch2);
}
if (isdigit(ch3)) {
printf("'%c' 是数字。\n", ch3);
} else {
printf("'%c' 不是数字。\n", ch3);
}
return 0;
}运行结果如下。
'A' 不是数字。
'$' 不是数字。
' ' 不是数字。分析:
对于字母、标点符号、空格等非数字字符,isdigit() 会返回 0(假)。
示例 3:isdigit() 从字符串中提取数字
#include <stdio.h>
#include <ctype.h> // 包含 isdigit() 函数
#include <string.h> // 包含 strlen() 函数
int main(void)
{
char str[] = "绿叶 666 教程 123";
for (int i = 0; str[i] != '\0'; i++) {
if (isdigit((unsigned char)str[i])) {
printf("%c", str[i]);
}
}
return 0;
}运行结果如下。
666123分析:
在这个例子中,我们使用for循环 来遍历字符串的每一个字符。然后,在循环中使用 isdigit() 来判断当前字符是否为数字。
示例 4:isdigit() 处理 EOF
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int result;
result = isdigit(EOF);
printf("%d\n", result);
return 0;
}运行结果如下。
0分析:
如果 isdigit() 的参数是 EOF,那么它会返回 0。
深入了解 isdigit()
isdigit() 函数的行为通常 “不受” 当前区域设置 (locale) 的影响,它只会将 '0' ~ '9' 识别为数字。这样可以使得 isdigit() 成为一个非常可靠且可移植的数字字符检查工具,而不像 isalpha() 或 isalnum() 那样在不同区域设置下可能会有额外的字符被识别。
需要注意的是,虽然 isdigit() 的参数 c 写的是 int 类型,但我们必须传入一个字符(比如 'a'、'B' 等),或者输入特殊的 EOF 值(常用于文件结束判断)。如果传入一个负数(除了 EOF),则可能会导致未定义行为。
