scanf的返回值
scanf的返回值等于成功输入的个数
例如
n=scanf("%d%d",&a,&b);
如果a和b都被成功赋值,则n=2;如果只有a被成功赋值,则n=1;如果ab都没能被赋值,则n=0。
EOF
读数时如果遇到错误或文件结尾,那么scanf的返回值为EOF,对应的有符号数时为-1。
做题时,对于没有明确结束标志的题目输入,可以用类似
while(scanf("%d%d",&a,&b)!=EOF)
来结束读入。
由于EOF==-1,还可以用位运算取反符~
简化
while(~scanf("%d%d",&a,&b))
例题
hdu 1094
题中没有明确说明给出多少测试样例,便可用EOF结束输入
AC代码
#include <stdio.h>
int main()
{
int n,sum,m;
while(scanf("%d",&n) != EOF) //或者while(~scanf("%d",&n))
{
sum=0;
while(n--)
{
scanf("%d",&m);
sum+=m;
}
printf("%d\n",sum);
}
return 0;
}