snprintf()
Menulis string terformat ke array karakter dengan pembatasan ukuran dalam C
Fungsi snprintf() digunakan untuk menulis data terformat ke dalam sebuah array karakter (buffer) dengan batasan ukuran maksimum yang dituliskan. Fungsi ini mirip dengan sprintf(), namun dengan kelebihan mencegah buffer overflow karena jumlah karakter yang dituliskan tidak akan melebihi ukuran buffer yang diberikan.
Sintaks
int snprintf(char *str, size_t size, const char *format, ...);str➜ Array karakter (buffer) tempat string hasil format disimpan.size➜ Ukuran maksimum buffer dalam byte (termasuk karakter null'\0').format➜ String format yang menentukan bagaimana data akan diubah menjadi teks....➜ Argumen tambahan yang akan disisipkan ke dalam string format.Mengembalikan: Jumlah karakter yang akan dituliskan jika buffer cukup besar (tidak termasuk karakter null), atau nilai negatif jika terjadi error.
Penjelasan
Pembatasan Ukuran Buffer: Fungsi ini memastikan bahwa tidak lebih dari
size - 1karakter (ditambah satu untuk karakter null) akan ditulis ke dalam buffer. Ini membantu mencegah terjadinya buffer overflow.Output Terpotong: Jika jumlah karakter yang akan dituliskan melebihi ukuran buffer, string akan dipotong sehingga hanya sebagian yang dituliskan, namun buffer selalu diakhiri dengan karakter null (
'\0').Nilai Kembalian: Fungsi mengembalikan jumlah karakter yang seharusnya dituliskan jika buffer cukup besar. Jika nilai yang dikembalikan lebih besar atau sama dengan
size, berarti terjadi pemotongan output karena buffer tidak cukup besar.
Contoh Penggunaan
#include <stdio.h>
int main(void) {
char buffer[20];
int angka = 12345;
// Menulis string terformat ke buffer dengan batas ukuran 20 byte
int ret = snprintf(buffer, sizeof(buffer), "Angka: %d, Hex: 0x%X", angka, angka);
// Menampilkan hasil string terformat
printf("Buffer: %s\n", buffer);
printf("Jumlah karakter yang seharusnya ditulis: %d\n", ret);
return 0;
}Hasilnya:
Buffer: Angka: 12345, Hex:
Jumlah karakter yang seharusnya ditulis: 23Last updated