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