所在头文件
stdio.h
签名
C99前
int scanf(const char *format, ...);
C99起
int scanf(const char *restrict format, ...);
功能
从 stdin 读取数据,按照 format 转译,并将结果存储到指定位置。
参数
- format - 指向指定读取输入方式的空终止字符串的指针。
- … - 接收用参数。
返回值
成功赋值的接收参数的数量(可以为零,在首个接收用参数赋值前匹配失败的情况下),或者若输入在首个接收用参数赋值前发生失败,则为EOF。
注意
因为多数转换指定符首先消耗掉所有连续空白符,如下的代码
scanf("%d", &a);
scanf("%d", &b);
将读取在不同行上(第二个 %d 会消耗第一个剩下的换行符)或同一行由空格或制表符分隔(第二个 %d 会消耗空格或制表符)的整数。
不消耗前导空白符的转换指定符,如 %c ,可以通过在格式字符串中前置一个空白符令它如此:
scanf("%d", &a);
scanf(" %c", &c); // 消耗 %d 后的所有后继空白符,然后读一个 char