Co robi fflush w programowaniu C

Co robi fflush w programowaniu C
W programowaniu C, fflush (stdin) Funkcja służy do wyczyszczenia pamięci bufora wejściowego dowolnych danych, które mogą być nadal przechowywane. Robi to poprzez zwolnienie pamięci powiązanej ze standardowym strumieniem wejściowym, znanym jako stdin, który jest domyślnym wejściem używanym do odczytu dowolnych danych z argumentów wiersza poleceń lub klawiatury. Oznacza to, że wszelkie pozostałe dane, które nie zostały przetworzone, są odrzucane, a wszelkie dane z ostatniej udanej operacji wejściowej można użyć.

Zgodnie ze standardem C, za pomocą fflush (stdin) to niejasny wzór zachowania. Niektóre kompilatory, takie jak Microsoft Visual Studio, pozwalają na to. Nawet przy przyjmowaniu liczby całkowitej z przestrzeniami i omawianiu wcześniejszych danych wejściowych dla tego samego bufor nie jest oczyszczany przez następne wejście. Ten problem jest rozwiązany przez płukanie tego samego strumienia i bufor fflush (stdin).

Spójrzmy na przykład:

#włączać
#włączać
int main ()

Char S [20];
int i;
dla (i = 0; i<3; i++)

printf („Wprowadź ciąg \ n”);
Scanf („%[^\ n] s”, s);
printf („%s \ n”, s);
fflush (stdin);

powrót 0;

Powyższy kod przyjmuje jedno wejście i daje ten sam wynik. Bufor jest następnie czyszczony za pomocą fflush (stdin) funkcja, a następnie następne wejście jest wprowadzane i drukowane i tak dalej.

Wyjście

Co robi Fflush (stdin) w programowaniu C?

fflush (stdin) Funkcja jest używana z operacjami wejściowymi, aby upewnić się, że dane są prawidłowe przetwarzane i nic nie pozostaje w buforze wejściowym. W programowaniu C każda operacja wejściowa pozostawi niektóre dane w buforze wejściowym. Dane te pozostają tam, dopóki program nie zdecyduje się je przetworzyć, ale może to powodować nieoczekiwane problemy. Na przykład, jeśli program oczekuje liczby jako danych wejściowych, ale użytkownik przypadkowo wpisuje literę, dane pozostawione w buforze będą nadal przetwarzane jako następne wejście. Może to spowodować awarię programu lub błędnie analizowane dane.

Używając fflush (stdin) funkcja może pomóc temu zapobiec. Funkcja usuwa bufor ręcznie, a zatem wszelkie pozostałe dane są z niego usuwane. Bez tej funkcji komputer nadal przetwarzałby resztki danych jako następne dane wejściowe, ale teraz można złapać każdy błąd, a program można wykonać, aby ponownie zarejestrować użytkownika dla prawidłowego wejścia.

Oprócz użycia go do wyczyszczenia buforów wejściowych, fflush (stdin) Funkcję można również użyć do spłukiwania strumieni wyjściowych. Jest to przydatne w programach wymagających wyjścia w czasie rzeczywistym lub wyświetlania postępu programu. Przez spłukiwanie strumienia wyjściowego najnowsze wyjście można natychmiast wyświetlić. W przeciwnym razie program musiałby poczekać, aż cały strumień będzie pełny, zanim będzie można go wyświetlić.

Wniosek

fflush (stdin) Funkcja jest istotną częścią programowania C. Spłukując pozostałe dane z buforów wejściowych, pomaga zapobiec wyrzuceniu programu nieoczekiwanych danych wejściowych. Dodatkowo może być używany do spłukiwania strumieni wyjściowych, które mogą być przydatne do wyświetlania informacji w czasie rzeczywistym. Chociaż nie jest często używany, fflush (stdin) Funkcja jest ważną częścią narzędzi każdego programisty.