scanf函数使用大全

来源:互联网 发布:淘宝上好看的女装店 编辑:程序博客网 时间:2024/05/29 12:55

讲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);用户可以以任意字符(回车、空格、制表符、逗号、其他)作为分隔符进行数据的输入。
原创粉丝点击