语法:
#include <cstdio> int scanf( const char *format, ... );
scanf()根据给定的格式从stdin中读取输入,并把数据存入其它参数中。它的工作方式很像printf()。
格式化字符串由控制字符,空白字符和非空白字符组成。控制字符由百分号(%)开头,并列在下面:
| 控制字符 | 解释 |
|---|---|
| %c | 一个单独的字符 |
| %d | 一个十进制整数 |
| %i | 一个整数 |
| %e, %f, %g | 一个浮点数 |
| %lf | 一个双精度浮点数 |
| %o | 一个八进制数 |
| %s | 一个字符串 |
| %x | 一个十六进制数 |
| %p | 一个指针 |
| %n | 等于目前读到字符数目的整数 |
| %u | 一个无符号整型 |
| %[] | 一组字符 |
| %% | 百分号 |
scanf() 读取输入,根据格式匹配字符。当读到控制字符时,它将值读取到下一个变量。空白字符(tab,空格等)被忽略。非空白字符匹配到输入,然后丢弃。如果在百分号和控制字符之间有数字,则至多有那么些字符被变换到变量中。如果scnaf()遇到由%[]控制字符表示的一组字符,那么任何方括号内的字符被读入到变量中。scanf()的返回值是成功被赋值的变量个数,如果发生错误返回EOF。
以下的代码简单展示了使用scanf()从用户读取一个整数,浮点数和双精度浮点数。注意scanf()的变量参数根据地址传递,由每个变量前引导的地址符(&)表示(denote?):
int i; float f; double d; printf( "Enter an integer: " ); scanf( "%d", &i ); printf( "Enter a float: " ); scanf( "%f", &f ); printf( "Enter a double: " ); scanf( "%lf", &d ); printf( "You entered %d, %f, and %lf\n", i, f, d );