我写了一个程序,提示用户从键盘输入一个字符并使用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);
}
截图:
当我执行它时,它不会给我一个字符的实际数值。
答案 0 :(得分:0)
使用最终的“scanf”,当您真正想要在不同的表示中显示现有的“键”值时,看起来您试图从控制台获得更多输入。尝试使用以下内容替换最后两行:
printf(" Decimal: %d\n\nHexadecimal: %#x\n\n", key, key);
这将导致您已捕获的“键”值以十进制(%d)和十六进制(%#x)格式显示。