我正在寻找一个有效的条件来检查用户是否正在写一个字符。我正在尝试(n!= char),但这在C中显然是不可能的吗?
这就是我所拥有的:
char n;
do
{
printf("Introduce a caracter\n");
scanf("%c", &n);
if(n!=char)
printf("Error! The caracter you introduced is not valid.\n");
}
while(n!=char);
return n;
答案 0 :(得分:1)
由于您只需要字母,大写或小写,您可以在if语句中使用此条件进行检查。
if((n<'a' || 'z'<n) && (n<'A' || 'Z'<n))
printf("Error! The caracter you introduced is not valid.\n");
这意味着:
如果&#39; n&#39;不是在&#39; a-z&#39;之间的字符之间。而不是在&#39; A-Z&#39;之间,然后是ERROR
考虑到de ascii chart,您可以将字符视为存储的整数。
答案 1 :(得分:0)
您无法区分此方法中的字符和非字符,因为您正在读取字符。字符只是一个8位整数,它可以是有符号或无符号的,就像8位整数可以是(int8_t
,uint8_t
)一样。因此,您可以这样说:
char c = 'A';
printf("%d %c\n", c, c);
这将打印:
65 A
因为A由十进制数65表示,%d`指定您希望打印十进制整数。
如果你想区分字符'A'和字符'4',那么你可以使用像这里使用的eventHandler之类的东西。如果您希望将“A”之后的所有内容计算为一个字符(这包括一些字符,如'['和'_'),您可以使用类似的内容:
if (n < 'A') {
printf("ERROR: You did not enter a character.\n");
}
正如eventHandler所说,请阅读ascii图表。