如何在C中显示字符的十六进制和十进制数值

时间:2014-02-15 23:00:29

标签: c

我写了一个程序,提示用户从键盘输入一个字符并使用else if()语句,计算机将告诉用户它是什么类型的字符。

例如:

  

从键盘输入字符>
  [R
  所选字符是小写字母

直到这里工作。我想知道如何显示该字符'r'的数字和十六进制值。这就是我到目前为止所写的内容:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int d;
    int x;                              
    char key;

    printf(" Enter a character from the keyboard>");
    scanf(" %c",&key);

    if(key >= 48 && key <= 57)
    {
        printf(" Selected character is a Number\n");
        printf(" Numerical value selected character is:\n\n");
        printf(" Decimal\n\nHexadecimal\n\n");
        scanf(" %d %x",&d,&x); 
    }
    else if(key >= 65 && key <= 90)
    {
        printf(" Selected character is an Uppercase letter\n");
        printf(" Numerical value selected character is:\n\n");
        printf(" Decimal\n\nHexadecimal\n\n");
        scanf(" %d %x",&d,&x);
    }    
    else if(key >= 97 && key <= 122)
    {
        printf(" Selected character is a Lowercase letter\n");
        printf(" Numerical value selected character is:\n\n");
        printf(" Decimal\n\nHexadecimal\n\n");
        scanf(" %d %x",&d,&x);
    }    
    else if((key >= 0 && key <= 47)||(key >= 58 && key <= 64)
        ||(key >= 91 && key>=96)||(key >= 123 && key <= 127))
    {
        printf(" Selected character is a special character\n");
        printf(" Numerical value of selected character is:\n\n");
        printf(" Decimal\n\nHexadecimal\n\n");
        scanf(" %d %x",&d,&x);
    } 
    system("pause");
    return(0);
}

截图:

screenshot

当我执行它时,它不会给我一个字符的实际数值。

1 个答案:

答案 0 :(得分:0)

使用最终的“scanf”,当您真正想要在不同的表示中显示现有的“键”值时,看起来您试图从控制台获得更多输入。尝试使用以下内容替换最后两行:

    printf(" Decimal: %d\n\nHexadecimal: %#x\n\n", key, key);

这将导致您已捕获的“键”值以十进制(%d)和十六进制(%#x)格式显示。