QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 910|回复: 4

求救:关于 fflush 函数

[复制链接]
发表于 2003-7-20 00:07:16 | 显示全部楼层 |阅读模式
我看到有文章说 fflush(stdin); 可以清除键盘缓冲区,我在windows下用turboc2.01编程试了一下,果然可以。
但是在linux下却不起作用,具体来说就是
int i;
char wd;

getchar();            /*在此输入一个长字符串*/

for(i=0;i<10;i++)
{  fflush(stdin);
     wd=getchar();
     printf("%c  ",wd);
  }

在windows下和在linux下有不同的结果。
这是为什么呢?
发表于 2003-7-21 09:15:44 | 显示全部楼层
对于输出流,fflush将已写到缓冲区但尚没写出的的全部数据写到文件中;
而对于输入流,ANSI  C 未定义其结果。
回复

使用道具 举报

 楼主| 发表于 2003-7-21 20:19:25 | 显示全部楼层
原来如此,多谢多谢!
回复

使用道具 举报

 楼主| 发表于 2003-7-21 20:22:39 | 显示全部楼层
一般用什么方法使前面的输入不影响后面的输入呢?
回复

使用道具 举报

发表于 2003-7-30 07:55:30 | 显示全部楼层
自己处理缓冲区~
[code:1]
#include <stdio.h>
#define BUFSIZE 1000
#define OUTPUT 1  /* 输出字符个数 */

int main(void)
{
    char wd[BUFSIZE];
    int i;

    for ( i = 0; i < 10; i++ )
    {
       fgets( wd, BUFSIZE, stdin );

         {
           int j;
           for ( j = 0; j < OUTPUT; j++ )
                printf("%c ",wd[j]);
         }
     }
   
     return 0;
}
[/code:1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 09:01 , Processed in 0.048679 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表