Artikel Terbaru

4 Tahap Menciptakan Elemen Menggunakan Method createElement() DOM

Pada dokumen html, method document.createElement() adalah method yang digunakan untuk menciptakan elemen html. Elemen ini ditentukan menggunakan elementName yang diciptakan sebelumnya, atau dari elemen html yang tidak diketahui, yang diciptakan jika elementName tidak ditentukan atau tidak dikenali.

2 Fakta Menarik tentang Fungsi fflush(stdin) pada Bahasa C

fflush() umumnya digunakan hanya untuk output stream. Fungsinya adalah untuk membersihkan (atau flushoutput buffer dan memindahkan data buffer menuju console (dalam kasus stdout) atau disk (pada kasus file output stream). Berikut adalah contoh dari penggunaan sintak fflush.

fflush(FILE *ostream);

Ostream merujuk pada output stream atau update yang recent yang operasinya tidak diinput, fungsi fflush membuat data apapun yang tidak tertulis untuk stream akan dikirim ke host environtment untuk ditulis sebagai file, jika tidak maka behavior tidak akan definsikan.

Apakah fflush dapat digunakan untuk input stream seperti stdin?
Sesuai dengan standard C, hal tersebut merupakan behavior yang tidak terdefinisi untuk menggunakan fflush(sdin). Namun demikian beberapa kompilator seperti Microsoft Visual Studio dapat memberikan akses untuk hal tersebut. Bagaimana cara menggunakannya pada kompilator? Ketika mengambil string input dengan spasi, buffer tidak akan dihapus untuk input selanjutnya dan menganggap input sebelumnya adalah sama. Untuk menyelesaikan permasalahan tersebut maka digunakan fflush(stdin) untuk membersihkan stream atau buffer.

// Program bahasa C untuk

// mengilustrasikan situasi

// dimana flush(stdin)

// dibutuhkan oleh kompilator

// saat ini

#include <stdio.h>

#include<stdlib.h>

 

int main()

{

char str[20];

int i;

 

for (i=0; i<2; i++)

{

scanf("%[^\n]s", str);

printf("%s\n", str);

// fflush(stdin);

}

 

return 0;

}

Input:
makan  
makandanmakan

Output:
makan
makan

Kode program sebelumnya hanya memberikan input tunggal dan mengembalikan nilai sama untuk input kedua. Alasan hal ini dapat terjadi karena nilai string telah disimpan pada buffer, artinya nilai stream belum dibersihkan dengan benar seperti yang diharapkan pada nilai string beserta spasi atau baris baru. Sehingga, untuk mengatasi situasi tersebut fflush(stdin) digunakan.

// Program bahasa c untuk

// mengilustrasikan

// flush(stdin).

 

// Program ini hanya bekerja

// secara efektif jika

// dikompilasi pada kompilator

// tertentu seperti Microsoft

// visual studio.

#include <stdio.h>

#include<stdlib.h>

 

int main()

{

char str[20];

int i;

 

for (i = 0; i<2; i++)

{

scanf("%[^\n]s", str);

printf("%s\n", str);

 

// Digunakan untuk

// membersihkan buffer dan

// melewatkan string

// selanjutnya

fflush(stdin);

}

 

return 0;

}

Input:
makan
makandanmakan

Output:
makan
makandanmakan

Apakah suatu pilihan yang baik untuk menggunakan fflush(stdin)?
Meskipun dapat menggunakan "fflush(stdin)" setelah statement "scanf()" juga dapat melakukan pembersihan pada beberapa kompilator, sangat tidak direkomendasikan untuk menggunakannya sebagai behavior tidak terdefinisi oleh bahasa standar.

Komentar

  1. Fungsi fflush(stdin) digunakan untuk membersihkan buffer keluaran dari stream. Fungsi tersebut mengembalikkan nilai nol, jika berhasil sebaliknya, maka akan mengembalikan EOF dan indikator error yang telah diatur.

    BalasHapus
  2. Bagaimana cara fflush bekerja pada bahasa C?

    BalasHapus
    Balasan
    1. Flush File Buffer atau fflush dalam bahasa C, merupakan fungsi yang digunakan untuk menulis data apapun yang tidak tertulis di buffer stream. JIka stream adalah petunjuk nol, maka fungsi fflush akan membersihkan semua stream dengan data yang tidak tertulis pada buffer.

      Hapus
  3. Kenapa fflush dapat bernilai salah pada bahasa C?

    BalasHapus
    Balasan
    1. stdin adalah variabel file standar yang menunjuk ke stream input yang biasanya digunakan untuk input keyboard, dimana fungsi dari fflush() dianggap sebagai "flush to buffer". Jadi, jika stream file adalah digunakan untuk input, seperti stdin, maka behavior-nya tidak dapat ditentukan, oleh karena itu tidak dapat diterima untuk menggunakan fflush() untuk menghapus inputan keyboard.

      Hapus
  4. Biasanya dalam dua programming terdapat dua tipe programmer dalam memahami program. Pertama mereka yang berpikir bahwa behavior tidak terdefinisi bukanlah suatu masalah besar, dan kedua adalah mereka yang menghabiskan waktu berhari-hari untuk mendebug kode program orang lain dan akhirnya baru menyadari bawah satu baris behavior tidak terdefinisi tersebut ternyata berpengaruh pada konfigurasi atau platform tertentu dari kompilator tertentu. :D

    Jika anda adalah orang yang mengabiskan waktu lebih dari 30 menit untuk memahami materi ini berarti anda termasuk katergori kedua,

    BalasHapus
  5. Program ini dapat bekerja dengan baik tanpa menggunakan fflush(). jika dikompilasi pada https://www.onlinegdb.com/online_c_compiler

    BalasHapus
  6. Program kedua yang menggunakan fflush(stdin), juga memberikan hasil output yang sama dengan program pertama yang tidak menggunakan fflush(stdin).

    BalasHapus
    Balasan
    1. Iya, kedua program dapat bekerja dengan baik pada kompilator berbasis offline.

      Hapus

Posting Komentar

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung. :D

Catatan: setiap iklan yang ditayangkan pada blog ini bersumber dari google adsense. Dengan jenis iklan yang dipilih adalah, sebagai berikut.

POIN 1, Iklan yang ditampilkan hanya boleh berbahasa indonesia atau berbahasa inggris. Tidak menerima jenis iklan dalam bahasa yang lain selain yang telah disebutkan karena blog ini dibuat untuk para pengunjung dari negara atau orang yang berbahasa Indonesia.

POIN 2, Setiap gambar yang ditampilkan pada iklan sifatnya tidak mengganggu para pengunjung yang melihat blog, atau tidak boleh menampilkan gambar yang bersifat menjijikkan atau merangsang rasa mual.

POIN 3, Jenis iklan yang dipasang bukan merupakan iklan spam, atau berisi dan mengarahkan pengunjung ke alamat yang berbahaya atau bersifat penipuan.

POIN 4, Segala bentuk iklan tunduk dan patuh pada ketentuan dari pihak Adsense google dan pemilik blog.

POIN 5, Segala jenis iklan yang tidak bertentangan dengan poin 1-4 yang dijelaskan sebelumnya, maka iklan tersebut dapat ditampilkan pada blog.

POIN 6, Jika ada pihak ketika yang ingin memasang iklan pada blog ini secara langsung, maka dapat menghubungi pemilik blog melalui kontak 0882 3218 8316.



~ Ikatlah Ilmu dengan Memostingkannya ~

Hot Artikel

Enkapsulasi pada Java

Perbedaan stdio.h dan stdlib.h pada Bahasa C

3 Jenis Utama Looping pada Java

Perbedaan Antara int main() dan int main(void) pada Bahasa C

Penjelasan Singkat tentang Konsep Asosiasi, Komposisi, dan Agregasi pada Java