PDA

View Full Version : سوال: Fflush(stdin) چه کاری انجام می ده ؟



aliexo
دوشنبه 12 بهمن 1388, 15:50 عصر
Fflush(stdin) چه کاری انجام می ده ؟

amin1softco
دوشنبه 12 بهمن 1388, 18:43 عصر
برای نوشتن جریان خروجی صفحه در یک فایل به کار می رود
البته فکر کنم!!!!!!!!!!

clover
دوشنبه 12 بهمن 1388, 21:00 عصر
Fflush(stdin) چه کاری انجام می ده ؟
fflush به طور کلی وظیفه ی flush یا خالی کردن بافر جریانی که به عنوان پارامتر بهش ارسال شده را به عهده داره.
حالا در این موردی که شما ذکر کرده اید (Fflush(stdin بافر جریان ورودی را خالی می کنه. کاربردش هم در هنگام استفاده از توابعی مثل gets هست که گاهی اوقات به علت وجود یک کاراکتر ناخواسته در بافر جریان ورودی باعث مشکل میشه. به کد زیر دقت کنید، یک بار بدون (Fflush(stdin و یک بار با این دستور اجراش کنید تا به طرز کار تابع پی ببرید:

// crt_fflush.c
#include <stdio.h>
#include <conio.h>

int 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( "%s", string, sizeof(string) );
printf( "%s\n", string );
}

// You must flush the input buffer before using gets.
// fflush on input stream is an extension to the C standard
fflush( stdin );
printf( "Enter the same sentence with gets: " );
gets_s( string, sizeof(string) );
printf( "%s\n", string );
}