数值和字符混合输入

第8章 复习题

习题8 数值和字符混合输入

  • 在使用缓冲输入的系统中,把数值和字符混合输入会遇到什么潜在的问题?

    用scanf()输入数值时,会将数值后的换行符‘\n’留在缓冲区,而再用getchar()或者fgetc()输入字符时,会将留在缓冲区的‘\n’读取。所以混合输入时,应当在读取字符之前处理删除留下的换行符。

    我的一种代码实现

    #include <stdio.h>
    
    int main()
    {
        int score;
        char grade;
        
        printf("Enter the score.\n");
        scanf("%d",&score);
        printf("Enter the letter grade.\n");
        while(getchar() != '\n')    //处理数值后可能存在的无效输入
            continue;
        grade=getchar();
        printf("%d\n%c\n",score,grade);
        return 0;
    }
    
    
  • 下面这两行代码及其变体在输入验证时也很有用

while(getchar() != '\n')  
      continue;

如:

while(scanf("%ld",&input) != 1)
  {
      while((ch = getchar()) != '\n')
          putchar(ch);        //处理错误输入
      printf(" is not an interger.\nPlease enter an"
                   "integer value, such as 1,-2:");

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 13,657评论 3 71
  • C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:...
    Poison_19ce阅读 4,985评论 0 0
  • 头文件stdio.hc语言的标准输入输出,常用printf;scanfiostreamc++语言的标准输入输出,重...
    bobobe阅读 7,317评论 0 2
  • “打着伞,穿过熙熙攘攘的人群却还是依旧被人群走包裹着” 我是打伞去树林的 别担心会下雨 因为思念,这很必要 就这样...
    訾_差矣阅读 3,848评论 2 5
  • 三体还有20%的篇幅就看完了,情节的确很吸引人。有点欲罢不能但又舍不得结尾的小纠结。关于三体,有两点想分享: 关于...
    木木子陈阅读 3,641评论 0 0

友情链接更多精彩内容