scanf是常用的C语言输入函数,正确定义为 : int scanf(char *format, ...),所有的参数都应该是指针,当 scanf函数扫描完其格式串,或者碰到某些输入无法与格式控制说明匹配的情况时,该函数将终止,同时,成功匹配并赋值的输入项的个数将作为函数值返回,所以,该函数的
返回值可以用来确定已匹配的输入项的个数。。如果到达文件的结尾,该函数将返回EOF。注意,返回EOF 与0 是不同的,0 表示下一个输入字符与格式串中的第一个格式说明不匹配。下一次调用scanf函数将从上一次转换的最后一个字符的下一个字符开始继续搜索。
scanf函数的基本转换说明
字符输入数据;参数类型
d 十进制整数;int *类型
i 整数;int *类型,可以是八进制(以0 开头)或十六进制(以0x或0X 开头)
o 八进制整数(可以以0 开头,也可以不以0 开头);int *类型
u 无符号十进制整数;unsigned int *类型
x 十六进制整数(可以0x或0X开头,也可以不以0x或0X开头);int *类型
c 字符;char *类型,将接下来的多个输入字符(默认为1 个字符)存放到指定位置。该转换规范通常不跳过
空白符。如果需要读入下一个非空白符,可以使用%1s
s 字符串(不加引号);char *类型,指向一个足以存放该字符串(还包括尾部的字符'/0')的字符数组。字
符串的末尾将被添加一个结束符'/0'
e, f, g 浮点数,它可以包括正负号(可选)、小数点(可选)及指数部分(可选);float *类型
% 字符%;不进行任何赋值操作
转换说明d、i、o、u 及x 的前面可以加上字符h 或l。前缀h 表明参数表的相应参数
是一个指向short类型而非int类型的指针,前缀l表明参数表的相应参数是一个指向long
类型的指针。类似地,转换说明e、f和g的前面也可以加上前缀l,它表明参数表的相应参
数是一个指向double类型而非float类型的指针。