C编程-验证int输入,使其不';他不是一个角色

C编程-验证int输入,使其不';他不是一个角色,c,validation,C,Validation,需要编写一个程序以int形式从用户处获取输入,并验证他们输入的不是a-z中的字符 除了以下方法外,还有其他方法可以做到这一点: 如果((num!='a')&&&(num!='b')&&(num!='c')&&(num!='d')等…) printf(“您输入了%d”,num) #包括 int main() { 字符c; printf(“输入字符:”); scanf(“%c”、&c); 如果((c>='a'&&c='a'&&c)包括 int main() { 字符c; printf(“输入字符:”

需要编写一个程序以int形式从用户处获取输入,并验证他们输入的不是a-z中的字符

除了以下方法外,还有其他方法可以做到这一点:

如果((num!='a')&&&(num!='b')&&(num!='c')&&(num!='d')等…) printf(“您输入了%d”,num)

#包括
int main()
{
字符c;
printf(“输入字符:”);
scanf(“%c”、&c);
如果((c>='a'&&c='a'&&c
)包括
int main()
{
字符c;
printf(“输入字符:”);
scanf(“%c”、&c);

如果((c>='a'&&c='a'&&c是,请使用ctype.h头文件中提供的isdigit()函数是,请使用ctype.h

头文件中提供的isdigit()函数。您可以在“ctype.h”中使用isalpha()函数header。如果是字母,则返回true。因此可以执行以下操作:

if ( !isalpha() )
{
    // Do whatever
}
有关详细信息,请参阅文档。

您可以在“ctype.h”标题中使用isalpha()函数。如果是字母,则返回true。因此,您可以执行以下操作:

if ( !isalpha() )
{
    // Do whatever
}

有关更多信息,请参阅文档。

与其试图确定它不是一个字符,不如确定它是一个数字,然后使用ctype中的isdigit函数放弃其余部分,如下所示

#include <ctype.h>

...

if (isdigit(num)) {
  printf("You entered %d\n", num);
}

另一种选择是使用atoi函数。但据我回忆,它不处理错误,我发现它比sscanf差得多。

与其试图确定它不是字符,不如确定它是数字,然后使用ctype中的isdigit函数丢弃其余部分,如下所示

#include <ctype.h>

...

if (isdigit(num)) {
  printf("You entered %d\n", num);
}


另一种选择是使用atoi函数。但我记得它不处理错误,我发现它比sscanf差得多。

变量必须声明为整数,而不是字符。这个答案与最初提出的解决方案没有太大区别。理论上,字母检查可以捕获非字母字符。如果您是在使用EBCDIC的IBM大型机上,则
'a'
'z'
-的代码之间存在非字母字符,并且在EBCDIC中
'z'-'a'
的差异不是25。请使用
isalpha()
@Saraph的宏:这个解决方案比26个等式比较简单得多。@JonathanLeffler好的,我假设OP最终会找到
运算符。变量必须声明为整数,而不是字符。这个答案与OP最初提出的解决方案没有太大区别。理论上,字母检查可以捕获非字母字符。如果您在使用EBCDIC的IBM大型机上,则
'a'
'z'
的代码之间存在非字母字符,并且在EBCDIC中
'z'-'a'
的差异不是25。请使用
isalpha()
@Saraph的
宏:这个解决方案比26个相等比较要简洁得多。@JonathanLeffler好的,我假设OP最终会找到
运算符。你应该注意前面有
-
字符的负数。你的问题模棱两可。看来你可能是能够使用:
int num;if(scanf(“%d”,&num)==1&&!islower(num))printf(“您输入了%d\n”,num);
(注意输出中的换行符)。如果输入本身是非数字的,则
scanf()
将失败;如果输入是数字,但在小写字母范围内(从ISO 8859派生的代码集中为97..122),则它将不被接受;
要阅读单个字符,答案有些不同。接受答案并释放你。你应该注意前面有
-
字符的负数。你的问题不明确。似乎你可以使用:
int num;if(scanf(“%d”,&num)==1&&!islower(num))printf(“你输入了%d\n”,num);
(注意输出中的换行符)。如果输入本身不是数字,则
scanf()
将失败;如果输入是数字,但在小写字母范围内(从ISO 8859派生的代码集中为97..122),则将不被接受。如果使用
int num=getchar()59
会是一个更好的解决方案。@Saraph我本来打算用这个,但我重新阅读了这个问题,一定是把它解释错了。你是对的。假设他除了数字以外什么都会做,我有点怀疑,因为他提到了
int
isdigit()
会是一个更好的解决方案。@Saraph我本来打算用这个,但我重新阅读了这个问题,一定是把它解释错了。你是对的。