请注意,我不是要像ctype.h中的isalpha()这样的函数来区分单个数字和字母(或其他字符)
我试图区分整数和字母。
问题是字母表也被视为C中的整数,我不能想出办法。
例如:如果输入是 字母a, 它与' a'相同。这是整数97。
我需要找到' a'或97是输入。
我试图这样做,并意识到它根本无法工作。
int a;
scanf("%d", &a);
if( (a>='A' && a<='Z') || (a>='a' && a<='z') )
{
printf("\nAlphabet");
}
答案 0 :(得分:2)
检查scanf()
int val;
int chk = sscanf("a", "%d", &val);
if (chk == 1) /* all ok */;
if (chk == 0) /* no assignments */;
if (chk == EOF) /* error */;
或
int val;
int chk = sscanf("97", "%d", &val);
if (chk == 1) /* all ok */;
if (chk == 0) /* no assignments */;
if (chk == EOF) /* error */;
或
int val1, val2, val3;
int chk = sscanf("97 b 99", "%d%d%d", &val1, &val2, &val3);
if (chk == 3) /* all ok */;
if (chk == 2) /* only val1 and val2 were assigned a value */;
if (chk == 1) /* only val1 was assigned a value */;
if (chk == 0) /* no assignments */;
if (chk == EOF) /* error */;
答案 1 :(得分:1)
您不必在scanf
之后区分它,因为它已经区分了它:
%d
只输入整数,因此您只需输入integer =&gt;如果你写9,你将在变量中存储9。您无法读取此字符(demo)。此外,如果输入97,它将在变量中存储97,这也对应于与%c
仅输入字符=&gt;如果你写9,你将存储字符9的相关代码,即 57 您可以查看scanf
的返回信息,以了解它是否成功读取。
因此,如果用户可以同时输入字符和字母,可能的解决方案只能获取%c
的字符,并在用户输入时重新创建整数:
int i = 0;
int dec = 1;
char c;
scanf("%c", &c);
if (c >= '0' && c <= '9')
{
i += c*dec;
dec *= 10;
}
else
{
// manage letter
}