1 scanf读取长整型的问题
问题:scanf("%ld", &input) 中,我在控制台上输入123a,它是将123赋值给input变量,但是缓存中还有一个a,导致下一次调用该语句时,下一个变量读取到的是a,导致读取失败。
有没有某种读取方法,将123a赋值给整型变量时,直接失败吗?
以下是获取长整型数值的函数:
long get_long(void) {
char ch;
long input;
while (scanf("%ld", &input) != 1) {
while ((ch = getchar()) != '\n')
putchar(ch); // 处理错误输入
printf(" (you entered) is not a long integer, pls enter a long integer value, such as 25, -178 or 3: ");
}
return input;
}
RCA: