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.