我想检查给定的输入是否是整数输入。我不想将输入存储在字符串中。看到在计算器和命中和审判的几个问题后,我已经创建了下面的代码scanf的工作和检查输入是int
while(scanf("%d%c",&num,&a) != 2 || a != '\n')
{
printf("Please enter an integer only : ");
if(a == '\n')
scanf("%c",&a);
else
{
while(a != '\n')
scanf("%c",&a);
}
}
它的工作原理,但据我的了解,下面应该有还曾
while(scanf("%d%c",&num,&a) != 2 || a != '\n')
{
printf("Please enter an integer only : ");
while(a != '\n')
scanf("%c",&a);
}
有人可以告诉我为什么上面没有工作?另外如果有人有更好的解决方案,请给它也。
注:我正在考虑12qwe也是一个无效输入。我只是想要整数。
也许“%d%N”的格式是什么你需要。你也可以检查scanf()的返回值。 – wildplasser
我做了你所说的。但它所做的是它正确地检查整数部分。但是,当正确输入整数时,它跳过我的代码中的下一个scanf()。/n在这里保持缓冲?我认为它不应该。 – Sahil
不,我的意思是“%d%n”。 %n报告成功消耗字符的数量:在你的情况下,输入字符串中的数字字符的数量。之后,你可以循环,直到你得到'\ n'。 (实际上,你不需要%n;只是读取%d,然后循环直到'\ n') – wildplasser