<cstdio>
<stdio.h>
C 库函数 int scanf(const char *format, ...) 从标准输入 stdin 读取格式化输入,即按用户指定的格式从键盘上把数据输入到指定的变量中。格式串中由于没有非格式字符在“%d%d%d”之间作为输入时的间隔,因此在输入时要用一个以上的空格或回车符作为每两个输入数之间的间隔。在读取数字时会跳过空格、制表符和换行符!
Parameters
format--这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。
•空格字符: 读取并忽略下一个非空格字符前所有的空格字符(空格字符包括空格' ',换行'\n'和制表符'\t' -- 具体查看 isspace). A single whitespace in the format string validates any quantity of whitespace characters extracted from the stream (including none).
•非空格字符(不包括%): 任意不是空格换行和制表符的非空字符,且不是以%开头的格式字符。与格式字符进行匹配,若匹配上,则返回成功匹配和赋值的个数。否则返回EOF,且剩下的stream不能读取了。
•format 说明符:以%开头,来明确读取的数据类型。匹配后将数据存储到对应的变量对应的区域。
%[*][width][length]specifier
Return Value
如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。
如果是读取宽字符错误,设置错误码为EILSEQ.
http://www.cplusplus.com/reference/cstdio/scanf/?kw=scanf
与getchar()的区别
1.读取方式不同
scanf函数在读取数字时会跳过空格、制表符和换行符。
getchar函数只能输入字符型,输入时遇到回车键才从缓冲区依次提取字符。
2.结束输入的方式不同
scanf函数以空格、Enter、Tab结束一次输入,不接受空格符作为数据。
getchar函数以Enter结束输入(空格不结束),接受空格符作为数据,接受回车符作为数据。
3.舍弃回车符的方法不同
scanf函数以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(回车符会残留在缓冲区中)。
getchar函数以Enter结束输入时,接受空格,会舍弃最后的回车符。