AKSES FILE
Penggunaan operasi FILE
dalam sebuah program sangat dibutuhkan dalam pembuatan program yang
sesungguhnya. Kita membutuhkan file sebagai tempat penampung data-data selama
operasi program. Jika kamu menggunakan variabel biasa, data yang biasanya
diolah program hanya akan tersimpan sementara dalam memory dan akan hilang
ketika program close. Berbeda dengan memory, penyimpanan
data berbasis file akan tersimpan terus walaupun program telah diclose maupun
komputer telah di shutdown.
Pada dasarnya, operasi
file terbagi 3 jenis. Read (R), Write(W), dan
Append(A). Read artinya membaca isi file, write menulis data ke file
dan append menambahkan data ke baris terakhir dalam file.
a. Struktur Dasar
int
main()
{
FILE
*in=fopen(namafile,mode);
fclose(in);
getchar();
return 0;
}
1.
FILE *in= fopen (namafile,
mode) ; Langkah pertama kita wajib membuka file
terlebih dahulu dengan perintah fopen. Fungsi fopen diikuti dengan 2 variabel
diantaranya namafile dan mode. Nama file bebas kamu tentukan sendiri.
2.
Setelah dibuka, file
tersebut wajib kita close dengan perintah fclose (namavariabel).
Karena diawal kita membuka file lalu menyimpannya dalam variabel pointer “in”, maka diakhir program juga wajib
menutup file dengan fopen(in);
Parameter Mode
|
Arti
|
R
|
Membuka file sesuai
nama filenya untuk dibaca, jika file tidak ada maka akan bernilai NULL.
|
W
|
Membuka file untuk
ditulis, jika sebelumnya sudah ada nama file yang sama, maka akan dilakukan
overwrite/menimpa file dengan yang baru.
|
A
|
Membuka file sesuai namafilenya
untuk ditambahkan datanya dipaling bawah baris terakhir. Jika file tidak ada,
maka akan membuat file baru secara otomatis.
|
r+
|
Sama dengan “r” tetapi
selain file dapat dibaca juga dapat di tulis
|
w+
|
Sama dengan “w” tetapi
selain file dapat ditulis juga dapat dibaca
|
a+
|
Sama dengan ”a” tetapi
selain file dapat ditulis file juga dapat dibaca
|
b. Read File
Sesuai
namanya, disini kita akan membuka file sesuai namanya lalu membaca isi
filenya. Untuk membaca isi file lalu menyimpannya ke dalam variabel, bisa
mengan menggunakan fscanf(namavariabelfile,
format);
Contoh
Isi file test.txt (letakkan di folder yang sama dengan file .cpp/.c) :
int
main()
{
char nama[100];
int umur;
FILE *in=fopen("test.txt","r");
while(!feof(in)){
fscanf(in,"%[^#]#%d\n", &nama,
&umur);fflush(stdin);
// %[^#] artinya kita menyimpan bagian dari
string dalam file sampai tanda #.
// Kita tidak menggunnakan %s karena nama
mengandung spasi
printf("%s %d\n", nama, umur);
}
fclose(in);
getchar();
return
0;
}
Bagaimana kalau seandainya file
dengan nama test.txt tidak ada?
int
main()
{
char nama[100];
int umur;
FILE
*in=fopen("text.txt","r");
if(!in){
//cek apakah filenya ada atau tidak
printf("tidak ada file");
}
Else
{
while(!feof(in)){
fscanf(in,"%[^#]#%d\n",
&nama, &umur);fflush(stdin);
printf("%s %d\n", nama, umur);
}
fclose(in);
}
getchar();
return 0;
}
Jika menggunakan mode
read, pastikan tidak melakukan fclose terhadap
file yang tidak ada. Karena itu akan mengakibatkan error.
c. Write File
Write file artinya kita
membuka file dalam mode write (siap untuk ditulis). Dengan menggunakan format
yang sama dengan diatas, kita akan mencoba membuat file baru dengan isi NAMA#UMUR.
Menyimpan
data ke file bisa menggunakan perintah fprintf(namavariabelfile, format);
int
main()
{
char nama[100];
int umur;
printf("Masukkan nama : ");
scanf("%[^\n]", &nama); fflush(stdin);
printf("Masukkan umur : ");
scanf("%d", &umur); fflush(stdin);
FILE
*out=fopen("test.txt","w");
fprintf(out,"%s#%d\n",nama, umur);
fclose(out);
printf("Sukses menambah data.");
getchar();
return 0;
}
Script diatas jika
dijakankan maka akan membuat file baru jika sudah ada datanya (overwrite). Lalu, hasil inputan nama dan umur akan
disimpan dalam file test.txt dengan format NAMA#UMUR
d. Append File
Append artinya
menambahkan data pada file baris terakhir. Jika belum ada data/filenya,
maka append akan membuatkan file baru. Contoh :
int
main()
{
char nama[100];
int umur;
printf("Masukkan nama : ");
scanf("%[^\n]", &nama); fflush(stdin);
printf("Masukkan umur : ");
scanf("%d", &umur); fflush(stdin);
FILE
*out=fopen("test.txt","a");
fprintf(out,"%s#%d\n",nama, umur);
fclose(out);
printf("Sukses menambah data.");
getchar();
return 0;
}
Apa perbedaannya Write
dengan Append? Bukannya sama-sama mengisi data ke file?
Jawabannya sudah
dijelaskan diatas, bahwa write akan selalu membuat file baru untuk mengoverwrite
file nama. Append, akan menambahkan data ke baris paling terakhir jika ada file
yang dituju. Jika tidak, maka akan membuat file baru.
DAFTAR PUSTAKA
Mahir koding. 2016. Operasi
file dalam Bahasa C. [On Line]. Tersedia: https://www.mahirkoding.com/operasi-file-dalam-bahasa-c/.
[11 Desember 2018].
Tidak ada komentar:
Posting Komentar