我试图在下一个程序中输入错误数据,但它无法识别错误。一旦我输入数字数据,下一次输入字符串数据,但程序没有反应:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main(void)
{
int i;
scanf("%d",&i);
if(ferror(stdin))
printf("Error is ocurred!");
}
不要假设函数的作用。阅读它的文档。
https://www.cplusplus.com/reference/cstdio/ferror/
int ferror ( FILE * stream );
检查错误指示器
检查是否设置了与流关联的错误指示符,如果设置了则返回一个不同于零的值。
该指示符通常由失败的流上的先前操作设置,并通过调用 clearerr、rewind 或 freopen 清除。
所以这取决于是否scanf
设置了错误指示器,在这种情况下它没有。
相反,使用这个:
if(scanf("%d",&i) != 1) {
// Error code
哦,不要使用use namespace std
Why is "using namespace std;" 被认为是不好的做法?