zoukankan      html  css  js  c++  java
  • C语言中字符输入问题

    先上例题,一道太水太水的题,

    http://acm.hdu.edu.cn/showproblem.php?pid=1170

    让做一个简单的计算器。然而入坑了。

    #include<stdio.h>
    int main(){
         int T,a,b;
         char c;
         scanf("%d",&T);
         while(T--){
             getchar();
         scanf("%c %d %d",&c,&a,&b);
         if(c=='+')
            printf("%d
    ",a+b);
         else if(c=='-')
            printf("%d
    ",a-b);
         else if(c=='*')
            printf("%d
    ",a*b);
        else{
            if(a%b==0)
                printf("%d
    ",a/b);
            else
                printf("%.2f
    ",a*1.0/b);
        }
         } 
         return 0;
    }

    本来感觉太简单了,但是提交就是不对,然后看大佬博客,然而网上的很多也不对,网上很多都是用%s输入字符,我迷茫了,忘了%s和%c应该用哪个,可是明明是字符啊,为啥用%s,坚持提交,然而一直错误,然后突然想到getchar()可以作为一个中断缓冲区,也就是让缓冲区做好准备,详细getchar(),下边讲下getchar();.

    1,从缓冲区读走一个字符,相当于清除缓冲区 ;
    2,前面的scanf()在读取输入时会在缓冲区中留下一个字符' '(输入完s[i]的值后按回车键所致),所以如果不在此加一个
    getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误  
    3. getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)  
    getchar()使用不方便,解决方法:   
    (1)使用下面的语句清除回车:   
    while(getchar()!=' ');   
    (2)用getche()或getch()代替getchar(),其作用是从键盘读入一个字符(不用按回车),注意要包含头文件<conio.h>  

    这样说就明白了,这道题最标准的答案就应该是这样了。

  • 相关阅读:
    设置eclipse启动时所需要的jdk
    Mvc ModelState.isValid为false时,检查时那个字段不符合规则的代码
    360急速浏览器JS的调试
    Python3 安装第三方包
    Sqlserver生成带数据的脚本
    Spring(八)核心容器
    Spring(七)核心容器
    Spring(六)核心容器
    Spring(五)核心容器
    Spring(四)核心容器
  • 原文地址:https://www.cnblogs.com/ls-pankong/p/9839412.html
Copyright © 2011-2022 走看看