捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >函数快查 > 正文
6 2018.02

scanf -- 格式化输入

点击次数:1276 更新时间:2018-2-6 19:27:10  【打印此页

scanf 函数文档



函数概要:

scanf 函数从标准输入流中读取格式化字符串。

与 printf 格式化输出函数相反,scanf 函数是格式化输入函数。


函数原型:

#include <stdio.h>
...
int scanf(const char *format, ...);



参数解析:

1format 参数

format 参数是一个格式化字符串,由格式化占位符和普通字符组成。

该格式化字符串指定如何处理读取到的数据:

 

·         空白字符:该函数将读取并忽略空白字符(空白字符包含空格、回车和制表符);

·         除了格式占位符(% 开头)外的非空白字符:指定函数必须从输入流中读取到的字符,如果读取不匹配,则函数调用失败,并从匹配失败处截断输入流;

·         格式化占位符(% 开头):用于指明获取的数据类型及位置。


格式化占位符的语法如下:

%[width][length]specifier 

每一个格式化占位符均以 % 开始,以转换字符结束。


specifier(转换字符,必选)的内容及含义如下:
 

转换字符

含义

c

读取一个字符

d

读取一个十进制整数,前边可以加上符号(+ 或 -)表示正负

i

1. 读取一个整数,前边可以加上符号(+ 或 -)表示正负
2. 0 开头表示八进制数,0x 开头表示十六进制数

e

读取一个以指数形式的单、双精度浮点数(小写 e)

E

同上(大写 E)

f

读取一个单、双精度浮点数(需要使用 lf),前边可以加上符号(+ 或 -)表示正负

g

同 f、e、E

G

同上(指数显示大写 E)

a

读取一个十六进制的浮点数(以 0x 或 0X 开头)

o

读取一个八进制整数,前边可以加上符号(+ 或 -)表示正负

s

读取一连串字符,直到遇到空白字符结束。

u

读取一个无符号的十进制整数

x

1. 读取一个十六进制整数,前边可以加上符号(+ 或 -)表示正负
2. 十六进制数以 0x 或 0X 开头

p

读取一个指针的值

[characters]

1. 匹配中括号括起来的字符集
2. 可以用小横杆(-)表示范围,比如 [0-9]

[^characters]

1. 匹配除了中括号括起来的字符集
2. 可以用小横杆(-)表示范围,比如 [0-9]

n

1. 存放已经读取的字符个数
2. 不消耗任何标准输入流的字符

%

表示匹配 % 自身


注1:除了 n,其他的每次读取都会至少消耗标准输入流中的一个字符。

注2:如果读取失败,则标准输入流截断于读取失败的位置。

星号(*)、width 和 length 是可选的。

 

·         星号(*)表示读取但忽略(读取但不保存);

·         width 指定当前读取操作的最大字符数;

·         length 是用于限定不同类型的宽度,具体请参考下表:

 

length

d i

uo x

feg a

cs[] [^]

p

n

默认

int*

unsigned int*

float*

char*

void**

int*

hh

signed char*

unsigned char*

     

signed char*

h

short int*

unsigned short int*

     

short int*

l

long int*

unsigned long int*

double*

wchar_t*

 

long int*

ll

long long int*

unsigned long long int*

     

long long int*

j

intmax_t*

uintmax_t*

     

intmax_t*

z

size_t*

size_t*

     

size_t*

t

ptrdiff_t*

ptrdiff_t*

     

ptrdiff_t*

L

   

long double*

     


小甲鱼温馨提示:因为整理自官方文档,所以出现了很多暂时你还不认识的东东,不用怕,暂时忽视他们即可……


2... 附加参数

该参数的个数由格式化字符串决定。

每个参数均为一个存储空间,并与面格式化字符串中占位符的类型和位置一一对应。

如果是一个普通的变量名,应在其名字前边加上 & 符号。


返回值:

如果函数调用成功,返回值是成功获取并填充到附加参数中的个数。

如果函数调用失败,返回值小于附加参数的个数(甚至是 0)。

如果读取到标准输入流的结尾处,则返回 EOF。


演示:

#include <stdio.h>

int main()
{
        char c;
        int i;
        int j;

        scanf("%c%d%x", &c, &i, &j);
        printf("变量c的值是:%c\n", c);
        printf("变量i的值是:%d\n", i);
        printf("变量j的值是:%#X(%d)\n", j, j);

        return 0;
}


 

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1276 更新时间:2018-2-6 19:27:10  【打印此页
关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修