如何从C中的输入读取十六进制数?

如何从C中的输入读取十六进制数?,c,hex,c99,C,Hex,C99,我想从用户那里读取十六进制数。我使用C99 我的想法是读取一个字符并通过字符代码检查它可能是什么十六进制数 代码如下: #include <stdio.h> int main() { char count; int c; printf("Enter hex value:\n"); scanf("%c", &count); if (count >= 48 && count &l

我想从用户那里读取十六进制数。我使用C99

我的想法是读取一个字符并通过字符代码检查它可能是什么十六进制数

代码如下:

#include <stdio.h>
int main() {
    char count;
    int c;
    printf("Enter hex value:\n");
    scanf("%c", &count);
    if (count >= 48 && count <= 57) {
        c = count - 48;
    }
    if (count >= 65 && count <= 70) {
        c = count - 55;
    }
    if (count >= 97 && count <= 102) {
        c = count - 87;
    }
    printf("%d", c);
    return 0;
}
#包括
int main(){
焦数;
INTC;
printf(“输入十六进制值:\n”);
scanf(“%c”、&count);

如果(count>=48&&count=65&&count=97&&count您可以将scanf与
%x
一起使用:

#include <stdio.h>

int main() {
    int a;
    scanf("%x", &a);
    printf("%d", a);
}


你从哪里得到这些数字,48、57、65等等?说真的,没有教科书或老师应该告诉你使用那样的数字。所以我很好奇你为什么要使用它们。也许我们可以阻止其他学生将来这样做。在C中,字符常量,如
'0'
'9'
'A'
,等等n提供字符的值。没有理由对数字进行硬编码。此外,对于可移植代码,您不能依赖字母的连续序列。@EricPostChil我是通过将输入的字符打印为整数来获得这些数字的。是的,您是对的。它根本不是可移植代码。与字符相比,它更好比他们的代码更有趣。谢谢!
a -> 10
ff -> 255