当scanf读取成功时返回读取到的参数数量,否则返回EOF。EOF是一个宏,定义在stdio.h里,值为-1。
以下面代码为例,正确的判断方式有:
scanf("%d-%d-%d", &year, &month, &day) != EOF
scanf("%d-%d-%d", &year, &month, &day) == 3
或
~scanf("%d-%d-%d", &year, &month, &day)
最后这个是利用了EOF等于-1这一特征,写起来短一点。效果等同于第一个。
(出自 http://bbs.bccn.net/thread-461366-1-1.html)