C语言如何判断一个字符是否是数字?

如题所述

这个是很简单的。你可以将字母a用数字的方式打印出来试试,如printf("%d",'a');输出是97,那么只要减去96就可以了。顺便说一下,首先char其实就是8位的整数变量,但是由于ASCII码的编码也是8位,所以常常使用char来表示ASCII字符,因此char也叫字符变量。所以char变量的本质就是数字。不难发现通过查找ASCII表,a的编码的十进制数就是97。当然你也会发现a和A的编码是不一样的,如果你的功能是输入a和A输出都是1,那么就要提前判断一下。

当然你也可以通过判断来实现这个功能,如:

char temp = getchar();
if(temp == 'a')
    ......
else if(temp == 'A')
    ......
else if(temp == 'f')
    ......

还有,可以通过switch来实现,如:

char temp = getchar();
switch(temp)
{
    case 'a':
        ......
        break;
    case 'A':
        ......
        break;
    default:break;
}

需要声明一下,由于char本身就是数字,所以是可以使用switch的,但是不要妄图通过switch来判断字符串变量(char[])这是不可行,虽然你可能在其他的高级语言中看到过这种用法,但是在C中是不能运行的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-10-19

方法1 判断这个字符的 ASCII值 在 '0' ~ '9' 的ACSII值之间。

方法2 C语言的  strtol() 函数是把字符串转换成整型数的一个函数,可用于判断。

long int strtol(const char *str, char **endptr, int base)

参数

    str -- 要转换为长整数的字符串。

    endptr -- 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。

    base -- 基数,必须介于 2 和 36(包含)之间,或者是特殊值 0。如果 base 为 0,则会根据字符串的前缀来判断进制:如果字符串以 '0x' 或 '0X' 开头,则将其视为十六进制;如果字符串以 '0' 开头,则将其视为八进制;否则将其视为十进制。

返回值

    函数返回被转换的长整型整数值。如果输入字符串不符合数字格式,strtol() 将返回 0。如果转换结果超出了 long 整数的表示范围,那么将产生溢出,并设置 errno 为 ERANGE。你可以使用 <errno.h> 头文件中的 errno 变量来检查是否有溢出发生。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网