scanf 妙招

来源:互联网 发布:冰川网络下载 编辑:程序博客网 时间:2024/04/28 09:51

 scanf 妙招
scanf原型:参见《C语言大全》和K&C
# include <stdio.h>;
int scanf( const char *format, ... );
 函数 scanf() 是从标准输入流 stdin 中读内容的通用子程序,可以读入全部固有类型的数据并自动转换成机内形式。
在 C99 中,format 用 restrict 修饰。format 指向的控制串由以下三类字符组成:
       ● 格式说明符
       ● 空白符
       ● 非空白符
    
     转换字符(就是%后跟的部分)             
       a   读浮点值(仅适用于 C99)                                 
       A   读浮点值(仅适用于 C99)                                                 
       c   读单字符                                               
       d   读十进制整数                                           
       i   读十进制、八进制、十六进制整数                         
       e   读浮点数                                               
       E   读浮点数                                               
       f   读浮点数                                               
       F   读浮点数(仅适用于 C99)                                 
       g   读浮点数                                               
       G   读浮点数                                               
       o   读八进制数                                             
       s   读字符串                                               
       x   读十六进制数                                           
       X   读十六进制数                                           
       p   读指针值                                               
       n   至此已读入值的等价字符数                               
       u   读无符号十进制整数                                     
      [ ]  扫描字符集合                                           
       %   读 % 符号(百分号)  

妙招1, 读取以回车结尾的输入串:
scanf("%[^/n]",strings);
/*[]指定读取字符集,为 回车符号 的补集,这样就可以读取字符串,并允许在串中带入空格字符*/

妙招2, 及时吸收缓冲的回车字符:
scanf("%d%*c", &i);
/* “*” 格式控制符号,是读取一个指定格式数据,并丢弃该数据。
    在正常的输入情况下,比如输入整数时候, 终止输入时候会敲入一个回车,这个回车会滞留输入缓冲中,
    对于后续输入为整数没有影响,但是如果后续的scanf 读取字符或者是字符串(%s  %c),那么,
    该滞留字符将被作为输入字符/字符串被接收*/


其中 [] 格式控制并不经常使用,但是不是说它的能力不足,
如果巧妙使用,可以有很多妙招, 这里就不一一列举了 .....
 
原创粉丝点击