scanf()函数返回成功读取的项数。如果没有读取任何项,且需要读取一个数字而用户却输入一个非数值字符串,scanf()便返回0。当scanf()检测到“文件结尾”时,会返回EOF(EOF是stdio.h中定义的特殊值,通常用 #define指令把EOF定义为-1)
3.补充:printf()和scanf()的*修饰符
printf()和scanf()都可以使用*修饰符来修改转换说明的含义。但是,它们的用法不太一样。
(1)printf()的*修饰符
例如:可以用修饰符代替字段宽度。但还是要用一个参数告诉函数,字段宽度应该是多少。 也就是说,如果转换说明是%d,那么参数列表中应包含*和d对应的值。这个技巧也可用于浮点值指定精度和字段宽度。
scanf(“%d”,&width);
printf(“The number is :%*d:\n”, width, number);
(2)scanf()的*修饰符
scanf()中*的用法与此不同。把*放在%和转换字符之间时,会使得 scanf()跳过相应的输出项。例如:
scanf(“%*d %*d %d”, &n);
//输入:
2013 2014 2015
会跳过两个整数,把第3个整数拷贝给n。