文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>fflush函数小结

fflush函数小结

时间:2010-06-20  来源:yjfx77

scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
  ①   遇空格、“回车”、“跳格”键。
  ②   遇宽度结束。
  ③   遇非法输入。
键盘缓冲区就可能有残余信息问题。
scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中
解决就要在scanf()函数之后加个fflush(stdin)

对输入缓冲区清空还可以用
do   {   int   c   =   getc();   }   while   (   c   !=   EOF   &&   c   !=   "\n ");

flush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃  
fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上。

#i nclude <stdio.h >
void   main()
{
int   a,b,c,d;
fflush(stdin);         //   单在这个程序里面,这句话是不起任何作用的,fflush(stdin)是一个未定义行为,也就是在标准c里面并没有规定有这样的用法,但是有的编译器内 定了这样也是合法的,比如vc,而在有的编译器下这就可能是一条错误的语句,比如gcc。所以这样写并不是一种好的习惯。你可以把这条语句换 成:while(getchar()   !=   "\n ")   ;
scanf("%d%d%d",&a,&b,&c);
if(a   >   b)
d   =   a;
else
d   =   b;
if(c   >   d)
d   =   c;
printf("%d\n",d);
fflush(stdout);
}
这样的一个问题。
假如输入的不是3个而是大于3个时候,是不是要清空缓冲区呢?//   如果是想把多余的输入清除的话,那就应该在输入语句之后加一条   while(getchar()   !=   "\n ")   ;这样可以保证,输入缓冲区中只有三个数。

输出的时候是不是也要清空一下呢?//   这个到是很少用 



#i nclude <stdio.h >
void   main()
{
int   a,b,c,d;
scanf("%d%d%d",&a,&b,&c);
while   (getchar   ()   !=   "\n ")       //   吃掉多余的输入
{
;
}
if(a   >   b)
d   =   a;
else
d   =   b;
if(c   >   d)
d   =   c;
printf("%d\n",d);

}

函数原型:int fflush( FILE *stream );
Return Value

fflush returns 0 if the buffer was successfully flushed. The value 0 is also returned in cases in which the specified stream has no buffer or is open for reading only. A return value of EOF indicates an error.

Note If fflush returns EOF, data may have been lost due to a write failure. When setting up a critical error handler, it is safest to turn buffering off with the setvbuf function or to use low-level I/O routines such as _open, _close, and _write instead of the stream I/O functions.

Parameter

stream

Pointer to FILE structure

例子:
/* FFLUSH.C */

#i nclude <stdio.h>
#i nclude <conio.h>

void main( void )
{
int integer;
char string[81];

/* Read each word as a string. */
printf( "Enter a sentence of four words with scanf: " );
for( integer = 0; integer < 4; integer++ )
{
scanf( "%s", string );
printf( "%s\n", string );
}

/* You must flush the input buffer before using gets. */
fflush( stdin );
printf( "Enter the same sentence with gets: " );
gets( string );
printf( "%s\n", string );
}


Output

Enter a sentence of four words with scanf: This is a test
This
is
a
test
Enter the same sentence with gets: This is a test
This is a test

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载