😈
ReverseMe
  • Introduction
  • References
  • ReverseMe
    • Introduction
      • What is Reverse Engineering?
      • Legality of Reverse Engineering
      • Reverse Engineering Communities
  • Programming Language
    • C
      • Basic
        • Pointer
        • Casting
      • Reference
        • stdio.h
          • fclose()
          • fopen()
          • fseek()
          • ftell()
          • fgetc()
          • fgets()
          • fread()
          • fprintf()
          • fwrite()
          • printf()
          • putchar()
          • puts()
          • sprintf()
          • snprintf()
        • stdlib.h
          • malloc()
          • calloc()
          • realloc()
          • free()
          • rand()
          • srand()
        • string.h
          • strcat()
          • strncat()
          • strcmp()
          • strncmp()
          • strcpy()
          • strncpy()
        • time.h
          • time()
  • Reversing Fundamentals
    • Stripped and Unstripped
  • Tools
    • file
    • strings
    • ltrace
    • ghidra
  • CTF Writeups
    • HackTheBox Challenges
      • Baby RE
      • You Cant C Me
  • ABOUT ME
    • Mail
    • LinkedIn
    • GitHub
Powered by GitBook
On this page
  • Sintaks
  • Penjelasan
  • Contoh Penggunaan
  1. Programming Language
  2. C
  3. Reference
  4. stdio.h

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 - 1 karakter (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: 23
Previoussprintf()Nextstdlib.h

Last updated 1 month ago