zoukankan      html  css  js  c++  java
  • flushall()函数的用法

    flushall()函数

    如下所示的一个非常简单的程序.

    1 #include 
    2 void main(void)
    3 {
    4     char cA,cB;
    5     printf("input cA and cB:
    ");
    6     scanf("%c",&cA);
    7     scanf("%c",&cB);
    8     printf("Now they are:%c	%c
    ",cA,cB);
    9 }

    本意思是从键盘接受两个字符,然后反馈到屏幕上.
    比如我要输入A和B,那么希望得到的结果是Now they are:A   B

    但结果却只显示了:A
    为什么是这样的结果呢?因为我们输入了一个A后会习惯性的按一个回车,告诉系统我输入了一个A.
    但是编译系统却不这么认为,它会以为我们输了一个A,然后又输入了一个回车.
    所以结果显示了一个A和一个看不见的回车.

    又如以下这个程序:

    1 #include 
    2 void main(void)
    3 {
    4     char cA,cB;
    5     printf("input cA and cB:
    ");
    6     scanf("%c%c",&cA,&cB);
    7 
    8     printf("Now they are:%c	%c
    ",cA,cB);
    9 }

    我们连续输入AB.然后回车,则会显示A   B.
    所以在输入字符型变量时务必小心.


    其实我们也可以借助flushall()函数来解决这个问题.
    flushall()函数能清除键盘缓冲区的内容.程序如下:

     1 #include 
     2 void main(void)
     3 {
     4     char cA,cB;
     5     printf("input cA and cB:
    ");
     6     scanf("%c",&cA);
     7     flushall();
     8     scanf("%c",&cB);
     9     printf("Now they are:%c	%c
    ",cA,cB);
    10 }

    和程序1比较我们能明显看见加了一个flushall();在输入了A然后按了回车之后.
    此处,flushall的用处是清除了回车.
    然后我们接着输入B.回车.
    结果一样正确!
                    
                    
                    

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/60641/showart_483344.html

  • 相关阅读:
    《需求工程——软件建模与分析》读后感之三
    项目目标文档
    利益相关者描述案例
    《需求工程——软件建模与分析》读后感之二
    《需求工程——软件建模与分析》读后感之一
    专业实训题目需求分析
    《代码之美》读后感
    计算“1”的数量
    团队冲刺第九天
    linux df 命令
  • 原文地址:https://www.cnblogs.com/andrewlee0708/p/flushall.html
Copyright © 2011-2022 走看看