我正在用C语言编写一个程序,我希望只有当用户输入两个整数时才能运行循环。我正在使用
while(scanf(" %d %d" ,&a ,&b) == 2)
但是如果我输入更多或更少的输入,程序不会终止。如果我输入单个输入,程序将等待下一行的第二个输入。如果我输入三个输入,程序将前两个整数,第三个等待后续输入。
我认为使用getchar()
可能有所帮助,但我不知道如何。
我做错了什么?
我该如何终止该程序?
答案 0 :(得分:0)
我该如何终止该程序?
答案 1 :(得分:0)
这就是它的表现方式。
要获得预期的输出,您可以使用类似
的内容int a, b;
char c;
for(;;) /* Infinite loop */
{
if(scanf("%d%c%d", &a, &c, &b) == 3 && c == ' ' && getchar() == '\n')
break; /* Break out of the loop */
fputs("Invalid input; Try again", stderr);
if(c != '\n')
while((c = getchar()) != '\n' && c != EOF); /* Clear the `stdin` */
}
答案 2 :(得分:0)
scanf返回stdin中读取的字符数。它工作正常。 如果输入单个整数,则scanf将等待第二个整数参数。您正在输入两个以上的整数,但您的scanf只读取前两个整数。所以,它返回两个,你的循环不会终止。 如果您想使用以下示例进行正确检查,请进行检查。
实施例: -
#include<stdio.h>
int main()
{
int x;
int y;
int i;
while((scanf("%d %d",&x, &y) == 2) && (i = getchar()) == '\n')
{
/* do your operations what you want */
}
}
我希望这会对你有所帮助。