设为首页 加入收藏

TOP

C语言编程的时候清除缓存总结
2012-11-01 09:14:41 来源: 作者: 【 】 浏览:362
Tags:语言编程 时候 清除 总结
    对于这个问题,我相信所有人刚开始都遇到过,今天在编程(www.cppentry.com)的时候就遇到了,我就给大家做一个总结。
   
    首先是为什么要请缓存呢:
   
    因为scanf()和getchar()函数是从输入流缓冲区中读取值的,而并非从键盘(也就是终端)缓冲区读取。
   
    解决的方法就是清除缓存区里面的东西,但是怎么样清除呢?
   
    在windows 下面flushall ()或者fflush (stdin),rewind (stdin) 都可以起到作用。
   
    但是对于这个作者所写的在linux 下的情况,我表示有问题。
   
    对于setbuf (stdin ,NULL)这个形式只能用于循环两次的输入。
   
    运行下来的结果就是正确的,但是一旦i>3以上,就有问题了。
   
    运行下来的结果就变成这样了:
   
    input a char:1
   
    input a char:2
   
    input a char:
   
    但是如果你 getchar () ,清楚缓存,不管你循环多少次就没有问题。
   
    代码如下:
   
    #include<stdio.h>
   
    int main()
   
    {
   
    char ch[10] ;
   
    int i=0;
   
    while (i< 2)
   
    {
   
    printf (“input a char:”);
   
    scanf (“%c”,&ch[i]);
   
    setbuf (stdin,NULL); (换成getchar ())
   
    i++;
   
    }
   
    printf (“%s”,ch);
   
    }
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C 文件直接包含 下一篇c语言二分法的使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: