【发布时间】:2017-02-28 20:10:21
【问题描述】:
我是 C 的新手,我曾经在 Python 中工作,我想看看我读到的东西是否是整数。如果没有,请阅读,直到我设法输入一个数字。
我做了一些研究,发现函数 scanf 实际上如果读取正确则返回 1,否则返回 0。
所以,我写了这段代码,我不明白为什么这是一个无限循环,在控制台上写“Give an integer”
#include <stdio.h>
int main() {
int a;
int b = 1;
do {
printf("Give an integer\n");
b = scanf("%d", &a);
} while (b == 0);
}
【问题讨论】:
-
问题是
scanf()不消费与你的字段描述符不匹配的数据。因此,当您循环返回重试时,仍然等待处理相同的不匹配数据。 -
有效!但我真的不明白为什么:))