😈
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 Pengunaan
  • 1. Menyalin sebagian string
  • 2. Menyalin string dan mengisi buffer dengan null
  1. Programming Language
  2. C
  3. Reference
  4. string.h

strncpy()

Menyalin sebagian karakter dari string dengan batasan dalam C

Fungsi strncpy() digunakan untuk menyalin sejumlah karakter tertentu dari string sumber ke string tujuan. Fungsi ini memberikan kontrol untuk mencegah buffer overflow dengan menyalin maksimal sejumlah karakter yang ditentukan, meskipun demikian, perhatikan bahwa penanganan karakter null ('\0') perlu diwaspadai.

Sintaks

char *strncpy(char *dest, const char *src, size_t n);
  • dest âžœ Pointer ke array (string) tujuan tempat string disalin.

  • src âžœ Pointer ke string sumber.

  • n âžœJumlah maksimal karakter yang akan disalin.

  • Mengembalikan: Pointer ke string tujuan (dest).

Penjelasan

  • Menyalin Sebagian String: Fungsi ini akan menyalin hingga n karakter dari src ke dest.

  • Penanganan Karakter Null: Jika panjang src kurang dari n, strncpy() akan mengisi sisa buffer dengan karakter null ('\0'). Jika src memiliki panjang sama dengan atau lebih dari n, hasil salinan tidak dijamin memiliki karakter null di akhir, sehingga kamu harus memastikan dest diakhiri dengan '\0' jika diperlukan.

  • Keamanan Buffer: Dengan menentukan n, kamu bisa mencegah buffer overflow, asalkan ukuran dest setidaknya sebesar n.

Contoh Pengunaan

1. Menyalin sebagian string

#include <stdio.h>
#include <string.h>

int main() {
    char sumber[] = "Hello, World!";
    char tujuan[20];

    // Menyalin 5 karakter pertama dari 'sumber' ke 'tujuan'
    strncpy(tujuan, sumber, 5);
    // Karena strncpy tidak selalu menambahkan '\0', tambahkan secara manual
    tujuan[5] = '\0';

    printf("Sumber: %s\n", sumber);
    printf("Tujuan (5 karakter): %s\n", tujuan);

    return 0;
}

Hasilnya:

Sumber: Hello, World!
Tujuan (5 karakter): Hello

2. Menyalin string dan mengisi buffer dengan null

#include <stdio.h>
#include <string.h>

int main() {
    char sumber[] = "Hi";
    char tujuan[10];

    // Menyalin hingga 10 karakter; karena sumber hanya 2 karakter, sisa buffer akan diisi '\0'
    strncpy(tujuan, sumber, 10);

    printf("Sumber: %s\n", sumber);
    printf("Tujuan: %s\n", tujuan);

    return 0;
}

Hasilnya:

Sumber: Hi
Tujuan: Hi
  • Di sini, sisa buffer di tujuan akan terisi '\0' secara otomatis.

Previousstrcpy()Nexttime.h

Last updated 2 months ago