scanf函数常见问题

scanf函数录入字母和字符时注意:

  • %d识别十进制数,在未取到值时,遇见空格、回车、tab时跳过,取其后面的值,直至取到十进制的数(跳过的字符,会从缓冲区中释放),遇见字母直接退出。
  • %c遇见数字789,只取'7'。
  • %s录入字符串
    • 遇见空格、回车、tab等空白字符,视为终止(gets()遇见回车符终止)。
    • 不读走缓冲区的回车符(gets()读走回车符,但是不作为字符串的一部分)。
      • 缓冲区清理:getchar()、%*c
  • 例子:

    int age; char sex; double height;     
    
    scanf("%d%c%lf",&age,&sex,&height);     
    
    //若输入为:19W1.62  /*不能正确输入*/                          
    
    // 19W1. 62  /*正确输入*/                         
    
    //19W1. 62  /*正确输入*/     
    
     scanf("%d%*c%c%lf",&age, &sex, &height);     
    
    //若输入为:19W1.62  /*正确输入*/                    
    
         /* 19和W之间只能间隔一个空格                         
    
          W和1.62之间允许多个空格  */
    
    float a; int b; double c;
    
    scanf("%5f%3d%lf",&a,&b,&c);
      
    // 若输入为:-1.534859
        
    // 则a=-1.53, b=485, c=9.0

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值