使用char验证数据

时间:2015-03-30 14:50:09

标签: c if-statement char int do-while

我正在寻找一个有效的条件来检查用户是否正在写一个字符。我正在尝试(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;

2 个答案:

答案 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_tuint8_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图表。