Fflush: Penjelasan Ringkas Beserta Contoh
Fflush(stdin) berfungsi untuk menghapus (flush)
isi dari input buffer. Biasanya ketika kita menginput sesuatu input buffer akan
terisi, jika kita menginput lagi, maka kita tidak bisa karena input buffer
sudah penuh dari input sebelumnya. Salah
satu cara menginputnya berupa scanf, gets, getch dan lain-lain. fflush(stdin) adalah undefined behavior dan
akan selalu bermasalah dalam ANSI C (karena tidak sesuai dengan standar C), oleh
karena itu gunakan fungsi alternative lain agar tidak terjadi penuhnya input
buffer. Fflush bisa menjadi salah satu
tindakan preventif untuk menghindari penuhnya input buffer.
contoh
program menggunakan fflush:
char nama[80];
|
|||
int umur;
|
|||
printf("masukkan umur:");
|
scanf("%d", &umur);
|
||
fflush(stdin); // flush input buffernya
|
printf("masukkan nama: ");
|
||
gets(nama);
|
Contoh alternative selain
menggunakan fflush:
int
ch;
while
((ch = getchar()) != EOF && ch != '\n') ;
alternative diatas akan membuang
semuanya sampai baris baru.
Mengapa fflush biasanya tidak
digunakan, dan hanya pada kasus tertentu?
Kalau ingin menghapus semuanya
dalam input buffer, itu tidak mungkin terjadi dengan aman atau portable. Dalam beberapa kasus, input adalah berupa
file yang penting dan kamu mungkin akan kehilangan beberapa blok data dari file
tersebut.
Sumber:
http://www.velocityreviews.com/forums/t724993-fflush-stdin-scanf-and-a-space.html
http://www.dreamincode.net/forums/topic/89633-input-buffer-problems-with-scanf/
http://hamzcraze.blogspot.com/2010/01/fungsi-input-dalam-bahasa-c.html
http://www.geekinterview.com/question_details/70110
http://www.gidnetwork.com/b-57.html
http://bytes.com/topic/c/answers/889600-what-does-fflush-stdin-do
Komentar
Posting Komentar