Scanf系列函数的高级用法

来源:互联网 发布:手机号码数据库 编辑:程序博客网 时间:2024/05/21 10:57

Scanf系列函数的高级用法

Scanf 从一个字符串中读进指定格式相符的数据,主要是用于从给定缓冲区内容输入到变量,达到给变量赋值的目的。就是所谓的格式化输入。

在一般情况下,我们在使用scanf时都只使用了其简单的用法。比如:

Int a = 0;

Int b = 0;

Scanf(“%d %d”,&a,&b);

若这段代码在控制台程序(非界面程序)中,会让用户输入两个数字,让后分别将数字的值赋值给a,b.

如果在scanf中加入{%[*] [width] [size]type | ' ' | '\t' | '\n' | }等,就会有很多其它高级功能了。

比如下面这个例子:

Char str[512] = {0};

scanf("%[^\n]%*c", str);

这个例子表示读到字符‘\n’停止读取,并且读入一个字符但是不赋值给变量。

 

scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。其调用格式为: scanf("<格式化字符串>",<地址表>);scanf()函数返回成功赋值的数据项数,出错时则返回EOF。其控制串由三类字符构成:

1.  格式化说明符;

%a 读入一个浮点值(仅C99有效)

%A 同上

%c 读入一个字符

%d 读入十进制整数

%i 读入十进制,八进制,十六进制整数

%o 读入八进制整数

%x 读入十六进制整数

%X 同上

%c 读入一个字符

%s 读入一个字符串

%f 读入一个浮点数

%F 同上

%e 同上

%E 同上

%g 同上

%G 同上

%p 读入一个指针

%u 读入一个无符号十进制整数

%n 至此已读入值的等价字符数

%[] 扫描字符集合

%% 读%符号

附加格式说明字符表修饰符 说明L/l 长度修饰符 输入"长"数据

h 长度修饰符 输入"短"数据

W 整型常数 指定输入数据所占宽度

* 星号 空读一个数据

hh,ll同上h,l但仅对C99有效。

 

1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)

2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。

3、width表示读取宽度。

4、参数的size: 常用的有hh表示单字节size,h表示2字节 size,其他详见mansscanf或msdn

5、type :这就很多了,就是%s,%d之类。

2.  空白符;

空白字符空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

3.  非空白符;

非空白字符一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。

 

4.scanf的结束

 

scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。

①  遇空格、“回车”、“跳格”键。

②    遇宽度结束。

③  遇非法输入。

0 0
原创粉丝点击