😈
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
  • Contoh Penggunaan
  • 1. Menulis array integer ke file biner
  • 2. Menulis data teks sebagai blok data
  • Penjelasan Tambahan
  1. Programming Language
  2. C
  3. Reference
  4. stdio.h

fwrite()

Menulis data ke file dalam C

Fungsi fwrite() digunakan untuk menulis blok data dari memori ke file. Fungsi ini sangat berguna untuk menulis data biner, seperti array atau struktur, langsung ke file tanpa harus mengkonversi ke format teks.

Sintaks

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
  • ptr âžœ Pointer ke blok data di memori yang akan ditulis.

  • size âžœ Ukuran setiap elemen yang akan ditulis (dalam byte).

  • count âžœ Jumlah elemen yang akan ditulis.

  • stream âžœ Pointer ke file yang sudah dibuka.

  • Mengembalikan jumlah elemen yang berhasil ditulis ke file. Jika nilainya kurang dari count, bisa berarti terjadi error atau disk penuh.

Contoh Penggunaan

1. Menulis array integer ke file biner

Misalkan kita memiliki sebuah array integer dan ingin menuliskannya ke file biner bernama data.bin.

#include <stdio.h>
#include <stdlib.h>

int main() {
    // Buka file data.bin dalam mode tulis biner
    FILE *file = fopen("data.bin", "wb");

    if (file == NULL) {
        printf("Gagal membuka file untuk menulis!\n");
        return 1;
    }

    int data[] = {10, 20, 30, 40, 50};
    size_t jumlahElemen = sizeof(data) / sizeof(data[0]);

    // Menulis array ke file
    size_t elemenTertulis = fwrite(data, sizeof(int), jumlahElemen, file);

    if (elemenTertulis != jumlahElemen) {
        printf("Gagal menulis data dengan benar ke file.\n");
    } else {
        printf("Berhasil menulis %zu elemen ke file.\n", elemenTertulis);
    }

    fclose(file);
    return 0;
}

Hasilnya:

Berhasil menulis 5 elemen ke file.

2. Menulis data teks sebagai blok data

Walaupun biasanya data teks ditulis dengan fprintf(), kita juga bisa menulis blok data teks menggunakan fwrite().

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

int main() {
    // Buka file output.txt dalam mode tulis biner
    FILE *file = fopen("output.txt", "wb");

    if (file == NULL) {
        printf("Gagal membuka file untuk menulis!\n");
        return 1;
    }

    const char *teks = "Halo, ini ditulis dengan fwrite()!";
    size_t panjangTeks = strlen(teks);

    // Menulis data teks ke file
    size_t byteTertulis = fwrite(teks, sizeof(char), panjangTeks, file);

    if (byteTertulis != panjangTeks) {
        printf("Gagal menulis seluruh data teks ke file.\n");
    } else {
        printf("Berhasil menulis %zu byte ke file.\n", byteTertulis);
    }

    fclose(file);
    return 0;
}

Hasilnya:

Berhasil menulis 36 byte ke file.

Penjelasan Tambahan

  • Data Biner vs. Teks:

    • fwrite() sangat berguna untuk data biner, karena menulis data persis seperti yang ada di memori.

    • Untuk data teks, fprintf() sering lebih mudah karena bisa menggunakan format spesifik.

  • Nilai Kembalian:

    • Nilai yang dikembalikan adalah jumlah elemen yang berhasil ditulis.

    • Jika nilainya kurang dari jumlah elemen yang diharapkan, periksa error atau kondisi disk.

  • Mode File:

    • Gunakan mode "wb" untuk menulis file biner.

    • Mode "w" untuk file teks pun bisa digunakan, tetapi perhatikan bahwa dalam beberapa sistem perbedaan mungkin terjadi dalam penulisan data.

Previousfprintf()Nextprintf()

Last updated 2 months ago