我有一个定义变量int data
的程序
程序使用scanf("%d",&data)
从stdin读取数据。如果来自stdin的数据不是整数,则必须打印错误消息。
我尝试过if(scanf("%d",&data) ==EOF){ printf("error");return 1;}
它对我没有用。因此,如何确定scanf是否成功?
scanf
的返回值是一个整数,告诉您成功读取了多少项。如果成功读取了单个整数,则scanf
将返回1。
例如
int items_read = scanf("%d", &data);
if (items_read != 1) {
//It was not a proper integer
}
关于读取整数here, on Stack Overflow的讨论很多。
scanf
返回成功读取的项目数。您可以通过检查1来检查它是否失败,因为您正在阅读一项:
if (scanf("%d", &data) != 1)
// error