Selasa, 18 September 2012

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

0 komen:

Poskan Komentar