scanf函数使用大全

讲C语言,大多按教材按部就班,以C二级考试为目的,渐渐的,对很多常用函数的理解就停留在了常见的使用形式,未能深入下去。一次做某道题,发现scanf函数使用的细微处,故整理记下,以备查。

scanf( 格式控制字符串 , 参数 地址 列表 );
格式控制字符串包含4种不同的字符:
(1)格式转换说明符
%c  以字符形式输入单个字符;
%s  输入字符串,以非空字符开始,遇第一个空白字符结束;

%d  以带符号十进制形式输入整型数据;
%f  以小数形式输入浮点数;
%e  以标准指数形式输入 ;   
%o  以八进制无符号形式输入(无前导0);
%x  以十六进制无符号形式输入(无前导0x)。
(2)格式修饰符
m  表示数据占用的宽度
l  加在d、o、x、u前:输入长整型,   加在f、e 前:输入双精度型;
*  本输入项在读入后不赋给相应的变量;
L  加在f、e 前:输入long double型;
h  加在d、o、x 前:输入短整型。
(3)空白字符
空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。
(4)非空白字符
一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
scanf() 的工作原理
系统分配一个读缓冲区
每次执行 scanf 时,先从缓冲区读取数据
对于 %c 以外的格式符, 忽略 所有先导空白字符 ( 空格符 、回车符、制表符 )
对于 %c 格式符,返回缓冲区中第一个字符, 包括 先导空 白字符
如果缓冲区没有数据,则等待用户输入
格式控制串可以使用空白字符或其它非空白字符,使用空白 字符会使 scanf() 函数在读操作中略去输入中的一个或多个空 白字符。
输入结束的标志
遇到空格符、回车符、制表符 (TAB)
达到输出域宽
遇非法字符输入

%*2d表示跳过2个整数;

结果a=12,b=34。输入时用空格隔开,(使用空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符)。
scanf("%d,%d",&a,&b);输入时需要输入12,34(“ , ”为非空白字符。 一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
scanf("%2d%2d",&a,&b);即使输入1234,%2d说明了读2位整数给a,2位整数给b,即a=12,b=34
scanf("%d%*%d",&a,&b); 用户可以以任意字符(回车、空格、制表 符、逗号、其他)作为分隔符进行数据的输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值