美文网首页
数值和字符混合输入

数值和字符混合输入

作者: lucas_cc | 来源:发表于2018-01-01 15:02 被阅读0次

    第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:");
    

    相关文章

      网友评论

          本文标题:数值和字符混合输入

          本文链接:https://www.haomeiwen.com/subject/ftetnxtx.html