problems_c

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:
problems_c_整型

2