【发布时间】:2015-11-06 18:28:43
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a, b, checka, checkb;
printf ("enter a: ");
checka = scanf ("%d", &a);
printf ("enter b: ");
checkb = scanf ("%d", &b);
printf ("checka = %d\n", checka);
printf ("checkb = %d", checkb);
return EXIT_SUCCESS;
}
我在一个较大的程序中遇到了这个问题,但我写了一个快速测试来看看我是否可以解决它,但我不能。
基本上,当为 scanf 输入除整数以外的任何内容时,程序会立即跳过并忽略所有其他 scanf,并仅打印它看到的程序的其余部分,这意味着我无法使用 while 循环进行检查,或者我只是得到一个无限循环,因为循环中用于修复变量的 scanf 被跳过了。
显然,如果输入整数,这个特定的程序将只为最后两个 printfs 返回 1,这是预期的。 我做错了什么?
谢谢!
【问题讨论】:
-
这是检查返回值 od
scanf的原因。这是有原因的。 -
这不是我正在做的事情吗?
-
不,我在这里看不到任何检查,您只是在打印结果
-
啊,在阅读下面的答案后,我明白现在尤金是什么支票了,谢谢。
-
观察
scanf()结果的新程序员! +1
标签: c validation scanf