Lompat ke konten Lompat ke sidebar Lompat ke footer

File Handling Bahasa C dan Penjelasannya

Sejauh ini operasi yang menggunakan program bahasa C dapat diselesaikan dengan bantuan proses prompt atau terminal yang hasilnya tidak disimpan pada direktori manapun pada komputer. Namun pada industri perangkat lunak, sebagian besar program bahasa C telah ditulis digunakan untuk menyimpan informasi yang berasal dari suatu program. Salah satu cara untuk menyimpan informasi tersebut adalah dengan menggunakan program pengolah file atau dokumen.


Sebelum memahami lebih dalam materi tentang File Handling Bahasa C dan Penjelasannya, terlebih dahulu pelajari materi tentang: Fungsi FGETS dan GETS Bahasa C dan Penjelasannya, Read dan Write Struktur File Bahasa C, dan Fungsi FOPEN Bahasa C untuk File dalam Mode Penulisan.

Berikut akan ditampilkan beberapa cara operasi file dengan menggunakan bahasa pemrograman C:
  • Menciptakan file baru, dengan menggunakan fungsi fopen yang disertai atribut "a", "a+", "w", atau "w++".
  • Membuka file yang sudah ada, dengan menggunakan fungsi fopen.
  • Membaca data yang terdapat dalam file, dengan menggunaakn fungsi fscanf atau fungsi fgets.
  • Menulis data ke sebuah file, dengan menggunakan fungsi fprintf atau fputs.
  • Bergerak ke lokasi spesifik dalam sebuah file, dengan menggunakan fungsi fseek atau fungsi rewind.
  • Menutup sebuah file, dengan menggunakan fungsi fclose.

Catatan: Teks yang terdapat dalam tanda kurung menunjukkan fungsi yang digunakan untuk melakukan operasi file pada bahasa C.

Fungsi untuk Membuka dan Menciptakan File

Untuk membuka sebuah file, fungsi fopen digunakan untuk mengakses mode tersebut. Beberapa bentuk atribut yang biasa digunakan bersamaan dengan fungsi fopen adalah sebagai berikut.

Mode file opening bahasa C:
  • "r" – Melakukan pencarian file; dimana jika sebuah file terlah berhasil dibuka dengan menggunakan fungsi fopen(), maka file tersebut akan ditunjuk menggunakan pointer ke dalam lokasi memorinya, dan pointer tersebut akan mengarah pada karakter pertama yang terdapat di dalam file. Jika file yang dituju tidak dapat dibuka menggunakan fungsi fopen(), maka akan mengembalikan nilai NULL.
  • "rb" – Melakukan mode pembacaan data biner pada file. Jika file yang dicari tidak ada, maka fungsi fopen() akan mengembalikan nilai NULL.
  • "w" – Melakukan pencarian file, dimana jika file yang dicari telah ditemukan, maka konten pada file tersebut akan dilakukan overwritten. Namun, jika file yang dicari tidak ditemukan, maka sebuah file baru akan diciptakan. JIka file yang telah diciptakan atau ditemukan tersebut tidak dapat dibuka, maka akan dikembalikan nilai NULL.
  • "wb" – Membuka file untuk menulis konten biner. Jika file yang dibuka ditemukan, selanjutnya akan dilakukan overwritten pada konten file. Namun, jika file tidak ditemukan, maka file baru akan diciptakan.
  • "a" – Melakukan pencarian file. Jika file berhasil dibuka menggunakan fungsi fopen(), maka akan dilakukan loading ke dalam memori, dan akan diberikan pointer yang akan menuju ke karakter terakhir dari konten yang terdapat dalam file tersebut. Jika file yang dicari tidak ditemukan, maka sebuah file baru akan diciptakan. Jika file yang telah dicari atau diciptakan tidak dapat dibuka, maka fungsi akan mengembalikan nilai NULL.
  • "ab" – Membuka file untuk melakuka penambahan data dalam mode biner. Data akan ditambahkan ke bagian akhir dari konten file. Jika file yang akan dilakukan penambahan tidak ditemukan, maka file baru akan diciptakan pada bagian direktori penyimpanan komputer.
  • "r+" – Memcari file dalam direktori penyimpanan atau komputer. Jika file yang dicari telah berhasil ditemukan menggunakan fungsi fopen(), maka akan diciptakan pointer yang akan menunjuk ke karakter pertama pada konten file tersbeut. Jika file yang dibuka tersebut tidak ditemuka, maka akan dikembalikan nilai NULL oleh fungsi fopen().
  • "rb+" – Membukan file untuk mode reading dan writing data biner. Jika file yang akan dibuka tidak ditemukan, maka fungsi fopen() akan mengembalikan nilai NULL.
  • "w+" – Melakukan pencarian file. Jika file yang dicari telah ditemukan, maka konten akan dilakukan overwritten. Namun, jika file yang dicari tidak ditemukan, maka file baru akan diciptakan, dan akan mengembalikan nilai NULL, jika file yang telah dicari atau diciptakan tersebut tidak dapat dibuka isi kontennya.
  • "wb+" – Membuka file untuk mode reading dan writing data biner. Jika file yang dicari telah ditemukan, maka konten file tersebut akan dilakukan overwritten. Jika file yang dicari tidak ditemukan, maka akan diciptakan file baru.
  • "a+" – Melakukan pencarian file. Jika file yang dicari telah berhasil dibuka menggunakan fungsi fopen(), maka file tersebut akan ditunjuk menggunakan pointer ke bagian karakter akhir dari konten file tersebut. Jika file yang dicari tidak ditemukan, maka sebuah file baru akan diciptakan, dimana selanjutnya akan dikembalikan nilai NULL, jika file yang telah dicari atau diciptakan tersebut tidak dapat dibuka isi kontennya.
  • "ab+" – Buka file dalam mode reading dan appending data biner. Jika file yang dibuka atau dicari tersebut tidak ditemukan, maka file baru akan diciptakan pada direktori penyimpanan komputer.

Seperti yang telah dijelaskan sebelumnya, jika ingin dilakukan suatu bentuk operasi file dalam mode biner, maka user harus melakukan append 'b' pada bagian akhir dari isi konten. Contoh, ketimbang melakuka operasi "w" pada file, user dapat langsung melakukan operasi "wb". Tidak hanya itu, ketimbang melakukan operasi "a+" pada file, user dapat melakukan operasi "a+b" pada file. Untuk melakukan jenis operasi tertentu pada file, maka sebuah pointer khusus akan dipanggil dan digunakan dalam proses deklarasinya.

FILE *filePointer;

Jadi, sebuah file dapat dibuka dengan sintak sebagai berikut:
filePointer = fopen("fileName.txt", "w")

Catatan: parameter kedua pada sintak ("w") dapat diganti dengan atribut lain yang terdapat pada operasi fungsi fopen().

Mode Reading File Bahasa C: Operasi read atau baca file dapat dilakukan pada bahasa C, dengan menggunakan fungsi fscanf atau fgets. Kedua fungsi tersebut, akan menampilkan bentuk operasi yang sama seperti operasi scanf dan gets, namun dengan penambahan parameter dan file pointer. jadi, fungsi baca file adalah fungsi yang bergantung pada keinginan user untuk membaca file baris per baris atau karakter per karakter.

Berikut adalah contoh kutipan kode program untuk membaca file menggunakan program bahasa C:
FILE * filePointer;
filePointer = fopen("fileName.txt", "r");
fscanf(filePointer, "%s %s %s %d", str1, str2, str3, &year);


Mode Writing File Bahasa C: Mode penulisan atau writing file pada bahasa C dapat dilakukan dengan menggunakan fungsi fprintf dan fputs, yang memiliki kesamaan seperti operasi read.

Berikut adalah contoh kutipan kode program untuk menulis file menggunakan program bahasa C:
FILE *filePointer ;
filePointer = fopen("fileName.txt", "w");
fprintf(filePointer, "%s %s %s %d", "We", "are", "in", 2012);


Mode Close File Bahasa C: Seteleh semua proses operasi file berhasil dijalankan, maka hal selanjutnya yang harus dilakukan adalah menutup file yang sedang digunakan tersebut. Untuk menutup file, maka dapat dilakukan dengan bantuan fungsi fclose().

Berikut adalah contoh kutipan kode program untuk menutup file menggunakan program bahasa C:
FILE *filePointer ;
filePointer= fopen("fileName.txt", "w");
/* Proses operasi tertentu pada file */
fclose(filePointer);


Contoh: Program untuk membuka sebuah file, dan menutup file bahasa C.

// Program Bahasa C untuk

// membuka file, menulis isi

// koten file, dan menutup

// file.

# include <stdio.h>

# include <string.h>


int main( )

{


// Deklarasi file pointer.

FILE *filePointer;


// Mendapatkan data untuk

// ditulis ke dalam file.

char dataToBeWritten[50]

= "Selamat datang dirumah

 makan nasi pandang.";


// Membuka file yang tersedia

// TeksTest.c menggunakan

// fungsi fopen() dalam mode

// menulis menggunakan atribut

// "w".

filePointer = fopen("TeksTest.c", "w") ;


// Memeriksa apakah

// filePointer bernilai null

// atau tidak, atau mungkin

// saja file yang dicari tidak

// tersedia.

if ( filePointer == NULL )

{

printf( "TeksTest.c file

 failed to open." ) ;

}


else

{

printf("The file is now

 opened.\n") ;


// Menulis dataToBeWritten ke

// dalam file.

if ( strlen ( dataToBeWritten ) > 0 )

{

// Menulis data menggunakan

// fungsi fputs().

fputs(dataToBeWritten, filePointer) ;

fputs("\n", filePointer) ;

}


// Menutup file menggunakan

// fungsi fclose().

fclose(filePointer) ;


printf("Data successfully

 written in file

 TeksTest.c\n");


printf("The file is now

 closed.") ;

}



return 0;

}



Contoh: Program untuk membuka sebuah file, membaca isi file, dan menutup file.

// Program Bahasa C untuk

// membuka file, membaca isi

// file, dan menutup file.

# include <stdio.h>

# include <string.h>


int main( )

{


// Deklarasi file pointer.

FILE *filePointer;


// Deklarasi variabel untuk

// membaca isi data dari suatu

// file.

char dataToBeRead[50];


// Membuka file TeksTest.c

// menggunakan fungsi fopen()

// dalam mode baca dengan

// menggunakan atribut "r".

filePointer = fopen("TeksTest.c", "r") ;


// Memeriksa jika file

// filePointer adalah bernilai

// null, yang mengindikasikan

// bahwa file tidak ada.

if ( filePointer == NULL )

{

printf( "TeksTest.c file

 failed to open." ) ;

}


else

{

printf("The file is now

 opened.\n") ;


// Membaca dataToBeRead dari

// file menggunakan fungsi

// fgets().

while( fgets ( dataToBeRead, 50, filePointer ) != NULL )

{


// Mencetak nilai dataToBeRead

printf( "%s" , dataToBeRead ) ;

}


// Menutup file menggunakan

// fungsi fclose().

fclose(filePointer) ;


printf("Data successfully read

 from file ELFTest.c\n");


printf("The file is now

 closed.") ;

}



return 0;

}


Contoh: Program untuk menulis konten pada file menggunakan fungsi fwrite().

#include <stdio.h>

#include <stdlib.h>


struct threeNum

{

int n1, n2, n3;

};


int main()

{

int n;

struct threeNum num;


FILE *fptr;


if ((fptr = fopen("C:\\program.bin","wb")) == NULL){

printf("Error! opening file");


// Program keluar, jika

// pointer file mengembalikan

// nilai NULL.

exit(1);

}


for(n = 1; n < 5; ++n)

{

num.n1 = n;

num.n2 = 5*n;

num.n3 = 5*n + 1;


fwrite(&num, sizeof(struct threeNum), 1, fptr);

}


fclose(fptr);


return 0;

}


Contoh: Program untuk membaca isi file menggunakan fungsi fread().

#include <stdio.h>

#include <stdlib.h>


struct threeNum

{

int n1, n2, n3;

};


int main()

{

int n;

struct threeNum num;


FILE *fptr;


if ((fptr = fopen("C:\\program.bin","rb")) == NULL){

printf("Error! opening file");


// Program keluar, jika file

// pointer mengembalikan nilai

// NULL.

exit(1);

}


for(n = 1; n < 5; ++n)

{

fread(&num, sizeof(struct threeNum), 1, fptr);


printf("n1: %d\tn2: %d\tn3: %d", num.n1, num.n2, num.n3);

}


fclose(fptr);


return 0;

}


File handling dalam bahasa pemrograman C merupakan salah satu aspek penting yang memungkinkan sebuah program untuk berinteraksi dengan data yang disimpan dalam file. Keberadaan file memungkinkan aplikasi untuk menyimpan data secara permanen dan mengakses informasi tersebut setelah aplikasi dihentikan. Sebelum era penyimpanan berbasis cloud dan database yang lebih kompleks, file handling menjadi solusi utama untuk menyimpan dan mengelola data. Dengan pemahaman yang mendalam mengenai file handling, pengembang dapat membuat program yang lebih efektif dan efisien dalam mengelola data.

Pengertian File Handling dalam C

File handling mengacu pada proses membuka, membaca, menulis, dan menutup file dalam bahasa C. Konsep dasar ini menyediakan cara bagi program untuk menyimpan dan mengambil data dari file yang ada di media penyimpanan, seperti hard disk, SSD, atau perangkat penyimpanan lainnya. Bahasa C menyediakan berbagai fungsi yang memudahkan pengelolaan file, antara lain `fopen`, `fclose`, `fread`, `fwrite`, `fscanf`, dan `fprintf`. Fungsi-fungsi ini memberikan kontrol penuh terhadap file yang akan digunakan oleh program.

Pada dasarnya, file dalam konteks bahasa C dibagi menjadi dua kategori utama: file teks dan file biner. File teks menyimpan data dalam format yang dapat dibaca oleh manusia, sementara file biner menyimpan data dalam format yang hanya dapat dipahami oleh komputer. Perbedaan ini memengaruhi cara data dibaca dan ditulis ke dalam file, yang pada gilirannya mempengaruhi jenis operasi yang dapat dilakukan.

Membuka dan Menutup File

Sebelum berinteraksi dengan sebuah file, file tersebut harus dibuka terlebih dahulu menggunakan fungsi `fopen`. Fungsi ini memerlukan dua parameter: nama file yang akan dibuka dan mode akses yang menunjukkan apakah file tersebut akan dibaca, ditulis, atau kedua-duanya. Mode akses ini mencakup berbagai opsi, seperti "r" (membaca), "w" (menulis), "a" (menambah), dan beberapa mode lain yang lebih spesifik. Setelah file dibuka, program dapat melakukan berbagai operasi pada file tersebut.

Setelah selesai melakukan operasi pada file, sangat penting untuk menutup file menggunakan fungsi `fclose`. Fungsi ini memastikan bahwa perubahan yang dilakukan pada file disimpan dengan benar dan sumber daya yang terkait dengan file tersebut dibebaskan. Mengabaikan penutupan file dengan benar dapat menyebabkan kebocoran memori atau kerusakan data dalam file.

Operasi Membaca dan Menulis File

File handling dalam C menawarkan berbagai cara untuk membaca dan menulis data. Fungsi seperti `fscanf` dan `fgets` digunakan untuk membaca data dari file, sedangkan `fprintf` dan `fputs` digunakan untuk menulis data ke file. Fungsi-fungsi ini memungkinkan pengembang untuk berinteraksi dengan data dalam file sesuai dengan format yang diinginkan. 

Untuk file teks, fungsi `fscanf` sering digunakan untuk membaca data dalam format yang terstruktur, seperti angka atau string. Fungsi ini mirip dengan fungsi `scanf` yang digunakan untuk membaca input dari pengguna, tetapi dalam konteks file. Sementara itu, `fgets` digunakan untuk membaca seluruh baris teks, termasuk spasi, sehingga berguna saat bekerja dengan data berbasis teks yang lebih kompleks.

Dalam hal menulis ke file, `fprintf` menyediakan cara untuk menulis data dalam format tertentu, seperti angka, string, atau karakter, yang memudahkan pengelolaan data terstruktur. Sebaliknya, `fputs` lebih sederhana dan digunakan untuk menulis string secara langsung ke file.

Pada file biner, operasi pembacaan dan penulisan dilakukan dengan menggunakan fungsi `fread` dan `fwrite`. Fungsi ini bekerja dengan data dalam format biner, yang lebih efisien untuk penyimpanan data yang kompleks, seperti struktur atau array besar.

Mode Akses pada File

Pemilihan mode akses yang tepat saat membuka file sangat penting dalam menentukan bagaimana file akan digunakan. Setiap mode akses memiliki tujuan dan fungsinya masing-masing, dan pemilihan mode yang salah dapat menyebabkan kesalahan atau kerusakan pada file. Beberapa mode yang paling umum digunakan adalah:
  • "r" (read): Digunakan untuk membuka file hanya untuk dibaca. Jika file tidak ada, operasi ini akan gagal.
  • "w" (write): Digunakan untuk membuka file hanya untuk menulis. Jika file tidak ada, file baru akan dibuat. Jika file sudah ada, maka isinya akan dihapus.
  • "a" (append): Digunakan untuk membuka file hanya untuk menambah data ke akhir file. Data baru tidak akan menghapus isi file yang ada.
  • "rb" (read binary): Digunakan untuk membuka file biner hanya untuk dibaca.
  • "wb" (write binary): Digunakan untuk membuka file biner hanya untuk menulis.
  • "ab" (append binary): Digunakan untuk membuka file biner hanya untuk menambah data ke akhir file.

Mode akses ini harus dipilih dengan bijak untuk memastikan bahwa data ditangani dengan cara yang sesuai dengan kebutuhan aplikasi.

Penanganan Kesalahan

Salah satu aspek penting dalam file handling adalah penanganan kesalahan yang mungkin terjadi selama operasi file. Kesalahan ini dapat disebabkan oleh berbagai faktor, seperti file yang tidak ada, akses yang ditolak, atau ruang penyimpanan yang tidak cukup. Untuk menangani kesalahan dengan baik, bahasa C menyediakan mekanisme untuk memeriksa status file setelah setiap operasi, seperti menggunakan fungsi `feof` untuk memeriksa apakah akhir file telah tercapai atau `ferror` untuk memeriksa apakah terjadi kesalahan pada file.

Penting untuk memeriksa apakah file berhasil dibuka setelah pemanggilan `fopen`. Jika file gagal dibuka, fungsi ini akan mengembalikan nilai `NULL`. Program harus dapat menangani kasus ini dengan memberikan pesan kesalahan yang sesuai atau melakukan tindakan yang diperlukan.

Penggunaan File Biner vs Teks

Keputusan untuk menggunakan file teks atau file biner tergantung pada jenis data yang akan dikelola. File teks sangat cocok untuk menyimpan data yang dapat dibaca oleh manusia, seperti konfigurasi atau catatan log, sementara file biner lebih efisien untuk menyimpan data yang kompleks dan besar, seperti gambar, audio, atau struktur data yang lebih canggih.

File biner menawarkan beberapa keuntungan, antara lain efisiensi ruang penyimpanan dan kecepatan dalam melakukan operasi baca/tulis, terutama untuk data yang tidak mudah direpresentasikan dalam format teks. Di sisi lain, file teks lebih mudah dikelola dan dianalisis menggunakan editor teks atau perangkat lain yang kompatibel.

Keamanan dan Privasi

Dalam konteks aplikasi yang memanipulasi file, aspek keamanan dan privasi menjadi perhatian utama. Misalnya, file yang berisi data sensitif atau pribadi harus dilindungi dari akses yang tidak sah. Bahasa C sendiri tidak menyediakan mekanisme keamanan tingkat tinggi untuk file handling, tetapi pengembang dapat mengimplementasikan kontrol akses atau enkripsi di tingkat aplikasi untuk melindungi file tersebut.

Selain itu, sangat penting untuk menjaga integritas data. Proses membaca dan menulis file harus dilakukan dengan hati-hati, terutama ketika berhadapan dengan file yang sering dimodifikasi atau digunakan oleh banyak proses sekaligus. Menggunakan teknik seperti penguncian file atau memastikan bahwa file ditutup dengan benar dapat membantu mencegah kerusakan data atau konflik dalam akses file.

Kesimpulan

File handling dalam bahasa C adalah keterampilan yang sangat penting bagi pengembang yang ingin membuat aplikasi yang dapat berinteraksi dengan data secara permanen. Dengan menggunakan berbagai fungsi untuk membuka, membaca, menulis, dan menutup file, serta memilih mode akses yang tepat, pengembang dapat mengelola data secara efektif. Pemahaman yang mendalam tentang cara kerja file dalam C juga memungkinkan pengembang untuk mengoptimalkan kinerja aplikasi dan menjaga integritas serta keamanan data. Terlepas dari jenis file yang digunakan, baik itu file teks maupun file biner, kemampuan untuk menangani file dengan benar adalah elemen kunci dalam pengembangan perangkat lunak yang sukses.

Referensi Tambahan:

Artikel ini akan dibaca oleh: Lovioleta Rifani Putri AzzahraLuqman Nur AlifLutfiatur RohmahMaerena Tia Amanda, dan Maulidya Al-Frida.

6 komentar untuk "File Handling Bahasa C dan Penjelasannya"

  1. Apa yang dimaksud dengan file handling atau penanganan file pada bahasa C?

    BalasHapus
    Balasan
    1. File handling atau penanganan file pada bahasa C adalah proses yang mengacu pada metode penyimpanan data dalam program Bahasa C berbentuk output atau input yang mungkin dihasilkan ketika program bahasa C dijalankan dalam file data, yaitu berupa file biner atau file teks untuk proses analisis dan referensi dimasa yang akan datang.

      Hapus
    2. Penanganan File Bahasa C atau file handling merupakan proses penyimpanan data dalam file menggunakan program bahasa C.

      Hapus
    3. Dalam pemrograman C, program akan menyimpan hasil, dan data program alinnya ke file menggunakan file handling C, tidak hanya itu user juga dapat mengekstrak atau mengambil data dari file untuk digunakan pada program yang sedang dijalankan.

      Hapus
  2. Apa saja proses yang dapat dilakukan pada file handling bahasa C?

    BalasHapus
    Balasan
    1. Beberapa proses yang dapat dilakukan menggunakan file handling bahasa C adalah membuat file baru, membuka file yang sudah ada, menulis data ke file, membaca data dari file yang sudah ada, memindahkan data ke lokasi tertentu pada file, dan menutup file.

      Hapus

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 -