【发布时间】:2020-02-23 00:14:19
【问题描述】:
我还是不明白scanf如何返回EOF值。窗口中运行的程序。
来自scanf的描述:
"如果在第一次转换(如果有)完成之前发生输入失败,scanf 函数返回宏 EOF 的值。否则,scanf 函数返回分配的输入项的数量,可以少于提供的,甚至为零,以防早期匹配失败。”
代码是
int main()
{
int status,a1,a2,b1;
char str1[100];
b1=EOF;
printf("b1=%d\n",b1);
printf("Enter input\n");
status=scanf("%d%d",&a1,&a2);
printf("status=%d",status);
return 0;
}
案例1 输入:
hello
输出
status=0
案例2 输入:
^z (press CTRL-Z)
输出
staus=-1
万一是第一次转换前输入失败?如果是第一次转换前的输入失败 为什么scanf返回0。
在情况 2 中,我按 CTRL-Z 进行第一次输入,然后 scanf 返回 -1 所以scanf返回EOF的唯一方法是按CTRL-Z?如果不是,请用示例代码解释我
【问题讨论】:
-
“输入失败”与“解析输入失败”不同。 “输入失败”是指文件结尾或实际读取错误。