【发布时间】:2011-11-18 17:05:40
【问题描述】:
我有一个程序定义了一个变量int data
程序使用scanf("%d",&data)从标准输入读取数据。
如果来自标准输入的数据不是整数,我必须打印错误信息。
我试过if(scanf("%d",&data) ==EOF){ printf("error");return 1;}
它对我不起作用。那么,如何判断 scanf 是失败还是成功呢?
【问题讨论】:
我有一个程序定义了一个变量int data
程序使用scanf("%d",&data)从标准输入读取数据。
如果来自标准输入的数据不是整数,我必须打印错误信息。
我试过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
【讨论】: