GETS Bahasa C dan Fungsinya
Pada artikel ini akan dijelaskan beberapa risiko yang dapat muncul jika menggunakan fungsi gets() pada program bahasa C.
Kode program tersebut memang terlihat sederhana, dimana kode program tersebut akan membaca standar input dan mencetak nilai string yang telah dimasukkan, tetapi akan mengalami buffer overflow gets() karena tidak melakukan pengujian array terikat, dimana gets() akan terus membaca sampai perintah tersebut melihat karakter baris baru.
Untuk menghindari buffer overflow tersebut, maka digunakan fgets() ketimbang gets() untuk memastikan bahwa karakter yang dibaca tidak lebih dari MAX_LIMIT.
Sebelum memahami lebih dalam materi tentang GETS Bahasa C dan Fungsinya, terlebih dahulu pelajari materi tentang: Penggunaan Char pada Bahasa C, Strcat dan Strcmp Bahasa C dan Fungsinya, dan Membuat Array Multidimensi Bahasa C dan Fungsinya.
Contoh:
void read()
{
char str[20];
gets(str);
printf("%s", str);
return;
}
Baca Juga:
Contoh:
Catatan: fgets() akan menyimpan karakter '\n' jika dibaca, sehingga untuk menghapusnya harus dilakukan secara eksplisit oleh programmer. Oleh karena itu, secara umum disarankan bahwa str setidaknya menyimpan sebanyak MAX_LIMIT+1 jumlah karakter jika tidak ingin menyimpan karakter baris baru. Hal ini dilakukan agar ada cukup ruang untuk karakter akhiran nol '\0' yang akan ditambahkan pada bagian akhir string.
Jika menjaga karakter baris baru tidak menjadi tujuan, maka dapat dilakukan dengan membuat instruksi berikut:
int len = strlen(str);
// Remove the '\n' character and replace it with '\0'
str[len - 1] = '\0';
#define MAX_LIMIT 20
void read()
{
char str[MAX_LIMIT];
fgets(str, MAX_LIMIT, stdin);
printf("%s", str);
getchar();
return;
}
int len = strlen(str);
// Remove the '\n' character and replace it with '\0'
str[len - 1] = '\0';
Referensi Tambahan:
- 5 Kondisi Untuk Melewatkan Array 2D sebagai Parameter Bahasa C
- Cara Simple untuk Membuat Long String Multibaris Bahasa C
- Penjelasan Singkat, Tipe Data yang Tidak Memungkinkan untuk Array Bahasa C
- Fakta Tentang Variabel Length Array Bahasa C
- Cara Simple Penggunaan Notasi Shorthand Array Bahasa C
- 2 Cara untuk Mengakses Array di Luar Batas Bahasa C
- 2 Parameter yang digunakan pada Strcpy Bahasa C
Artikel ini didedikasikan kepada: Tri Angga Wijayanto, Utari Hadi Novitasari, Windi Wandira, Yustian Dewi Krismarani, dan Abdullah Safi'I Khusnul Huda.
6 komentar untuk "GETS Bahasa C dan Fungsinya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Apa alternatif yang dapat digunakan sebalin menggunakan fungsi gets() pada bahasa C?
BalasHapusFungsi alternatif selain menggunakan fungsi gets() adalah dengan menggunakan fgets() atau getline().
HapusFungsi fgets() dapat digunakan sebagai pengganti dari fungsi gets() pada bahasa C guna menyelesaikan permasalahan yang terdapat pada fungsi gets(), dimana fgets() akan membaca seluruh baris hingga karakter '\n' ditemukan.
Hapusfgets() didukung oleh sebagian besar implementasi C seperti gcc, unix, kompilator Borland, dan lain sebagainya.
HapusKenapa penggunaan fungi gets() pada bahasa C dapat berbahaya bagi program?
BalasHapusPenggunaan fungsi gets() dapat berbahaya bagi program karena fungsi tersebut dapat mengarah pada buffer overflow atau kesalahan a.k.a error.
Hapus