Anda di halaman 1dari 10

MODUL II

PEMROSESAN FILE

2.1. Tujuan Praktikum


Praktikan diharapkan dapat :
a. Mengetahui dan memahami perintah-perintah dasar pemrosesan file
b. Mengimplementasikan konsep pemrosesan file dalam sebuah studi kasus

2.2. Dasar Teori


Seringkali untuk program-program aplikasi system informasi, data perlu
disimpan secara permanen untuk keperluan lebih lanjut. Data dapat disimpan di
external memory seperti di disk, floppy disk, dan UFD(USB Flash Disk) ataupun
di internal memory sendiri pada penyimpanan internal memory mempunyai sifat
volatile dan relatif lebih kecil dibandingkan dengan external memory.
Pada bab ini akan membahas tentang operasi input/output file dan manipulasi
file. Operasi I/O file melibatkan pembacaan dari file atau perekaman ke file.
Manipulasi file melibatkan operasi pengecekan keberadaaan file di disk,
mengganti nama, menghapus file, dan lain-lain.

2.2.1. Membuka File


Suatu file di disk harus di buka sebelum digunakan dapat dilakukan
dengan fungsi pustaka fopen(). Hasil dari pembukaan file ini akan didapatkan
suatu nilai pointer dengan tipe FILE berikut ini bentuk operasi buka file :
FILE *fopen (const char*nama_file, const char*mode);
Pada operasi di atas nama_file dan mode ditentukan oleh pembuat program
sendiri berikut ini contoh mode yang digunakan di bahasa C :
Tabel 2.1 Mode dalam Bahasa C
Mode Arti
“r” Membuka file yang telah ada untuk dibaca. Jika file belum ada,
pembukaan file tidak akan berhasil dan fungsi fopen akan bernilai

II-1
[Algoritma dan Struktur Data – Muhamad Fahmi Alwi] II-2

NULL.
“w” Membuat file baru untuk ditulis. Jika file telah ada maka file lama
akan dihapus.
“a” Membuka file yang telah ada untuk ditambah dengan data baru yang
akan diletakkan di akhir file. Jika file belum ada akan dibuat file baru.
“r+” Sama dengan “r” tetapi selain file dapat dibaca juga dapat ditulis.
“w+” Sama dengan “w” tetapi selain file dapat ditulis juga dapat dibaca.
“a+” Sama dengan “a” tetapi selain file dapat ditulis juga dapat dibaca.

Contoh program :
#include <stdio.h>
#include <conio.h>
main()
{
FILE *PF;
PF=fopen("coba.txt","r");
if(PF==NULL){
printf("terdapat kesalahan file tidak dapat dibuka atau tak
ada");
}
Else
{printf("file dapat dibuka");
}
getch();
return 0;
}
Tampilan program :

Gambar 2.1 Tampilan Program 1


Analisis :
Program tersebut merupakan program yang digunakan untuk Membuka
file yang telah ada untuk dibaca. Pada contoh kasus diatas program di minta untuk
membuka file “coba.txt” dengan perintah “r”, namun file “coba.txt” tersebut
belum dibuat atau file tersebut tidak ada, sehingga program menampilkan kalimat
“Terdapat kesalahan file tidak dapat dibuka atau tak ada”. Artinya PF bernilai
NULL.
Pada contoh program di atas digunakan untuk mencoba fungsi pustaka
fopen(). Program di atas dapat berjalan jika terdapat file coba.txt saat pertama
[Algoritma dan Struktur Data – Muhamad Fahmi Alwi] II-3

jangan buat file tersebutdahulu bila sudah pada kesempatan kedua file coba.txt
dihapus. Pada salah satu percobaan akan menghasilkan pencetakan peringatan
bahwa file tidak dapat dibuka atau tidak ada, berarti dapat terlihat operasi fopen()
dapat berjalan dan jika tidak ditemukan file yang diinginkan atau terjadi kesalahan
nilai pointer PF akan bernilai NULL.

2.2.2. Menutup File


Menutup file umumnya dilakukan untuk tiga tujuan yaitu pertama
menutup semua file yang masih terbuka sebelum program berakhir, kedua
menutup file tertentu karena tidak diperlukan lagi dan ketiga menutup karena
ingin membuka file lain. Fungsi pustaka yang digunakan untuk sebuah file adalah
int fclose(FILE *pointer-file);
Contoh program :
#include <stdio.h>
#include <conio.h>
main()
{
FILE *PF;
PF = fopen("coba.txt","r");
if(PF==NULL)
printf("terdapat kesalahan file tidak dapat dibuka atau tak
ada");
else
printf("File dapat dibuka");
getch();
if(fclose(PF)==EOF)
printf("tidak dapat menutup file");
getch();
}

Program di atas adalah kelanjutan setelah membuka file biasanya jika file
tidak digunakan lagi maka dilakukan penutupan file yaitu dengan fungsi pustaka
yang ada. Seperti contoh program di atas pada operasi penutupan file dilakukan
pemeriksaan kondisi apakah nilai dari pointer EOF yang bernilai -1 jika “ya”
maka operasi penutupan file tidak dapat dilakukan.

2.2.3. Meletakan Data ke Buffer


Bahasa C membedakan lima macam bentuk data untuk diletakan di
penyangga (buffer), yaitu karakter, integer, string, terformat, dan blok data. Untuk
[Algoritma dan Struktur Data – Muhamad Fahmi Alwi] II-4

masing-masing data ini fungsi pustaka yang digunakan berbeda yaitu sebagai
berikut :
Tabel 2.2 Fungsi Pustaka
Fungsi Pustaka Penjelasan
fputc() Meletakkan sebuah nilai karakter ke buffer untuk
direkam ke file
fgetc() Membaca sebuah nilai karakter dari file untuk
diletakkan di buffer
putw() Meletakkan sebuah nilai integer ke buffer untuk
direkam ke file
getw() Membaca sebuah nilai integer dari file untuk
diletakkan di buffer
fputs() Meletakkan sebuah nilai string ke buffer untuk
direkam ke file
fgets() Membaca sebuah nilai string dari file untuk diletakkan
di buffer
fprintf() Meletakkan sebuah data terformat di buffer untuk
direkam ke file
fscanf() Membaca sebuah data terformat dari file untuk
diletakkan di buffer
fwrite() Meletakkan sebuah blok data ke buffer untuk direkam
ke file
fread() Membaca sebuah struktur data dari file untuk
diletakkan di buffer

Contoh memasukan karakter ke sebuah file :


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
FILE *PF;
char C;
if ((PF=fopen("coba.txt","w"))==NULL){
printf("file tidak dapat dibuka");
exit(1);}
while((C=getche())!='\r')
fputc(C,PF);
fclose(PF);
}
[Algoritma dan Struktur Data – Muhamad Fahmi Alwi] II-5

Pada program di atas pertama kali dilakukan adalah operasi pembukaan


file dengan fopen() selanjutnya dilakukan pemeriksaan apakah bernilai NULL
dilakukan untuk mengetahui apakah berhasil dalam membuka file yang dituju.
Pada syntak selanjutnya dilakukan penangkapan karakter yang di input melaui
keyboard dengan C=getche() ini akan terus dilakukan hingga ditekan Enter
dikarenakan dilakukan looping dengan sintaks while((C=getche())!’\r’) karakter
‘\’ yang mewakili ASCII dari “Enter”.
Kemudian barulah karakter yang telah ditampung di variable C
dimasukkan ke file dengan cara fputc(C,PF); selanjutnya hanya tinggal menutup
file dengan fclose(PF); Contoh program untuk membaca karakter yang
telah dimasukkan ke dalam file :
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
FILE *PF;
char C;
if ((PF=fopen("coba.txt","w"))==NULL){
printf("file tidak dapat dibuka");
exit(1);}
while((C=getche())!='\r')
fputc(C,PF);
fclose(PF);
}
Tidak jauh berbeda dengan program untuk memasukkan karakter ke file,
untuk membukanyapun diperlukan operasi membuka file. Yang berbeda adalah
saat memasukkan ke file saat sekarang dibalik menjadi membaca dan jangan lupa
mode yang digunakan pada membaca file adalah “r”. Untuk membacanya kita
melakukan looping yang berfungsi memasukkan setiap karakter di file sampai tak
tersisa ke dalam variable C dengan sintaks while((C=fgetc(PF))!==EOF)
selanjutnya tinggal mencetak karakter yang telah ditampung dalam variable C
dengan putchar(C);
Contoh program yang diberikan hanyalah memasukkan karakter dan
membacanya dari dan ke file namun dapat lebih dikembangkan dengan mengganti
data yang dimasukkan seperti dengan data terformat ataupun integer.
[Algoritma dan Struktur Data – Muhamad Fahmi Alwi] II-6

2.2.4. Manipulasi File


Bagian ini akan membahas bagian manipulasi suatu file yang tidak
melibatkan proses I/O seperti :
2.2.4.1. Mengecek Keberadaan File
Mengecek keberadaan file sering kali diperlukan jika akan membuat
suatu file baru untuk mengetahui file itu sudah ada atau tidak. Fungsi pustakanya
adalah int access(const* path, int amode);
Const char* path menunjukan letak file itu berada. Amode berbeda
dengan mode operasi file. Di sini terdapat beberapa amode yaitu :
- Amode 0 menunjukkan hanya akan memeriksa keberadaan file di disk
- Amode 2 menunjukkan pemeriksaan apakah file dapat ditulis
- Amode 4 menunjukkan pemeriksaan apakah file dapat dibaca
- Amode 6 menunjukkan pemeriksaan apakah file dapat dibaca dan ditulis
Fungsi pustaka access terdapat dalam prototype io.h, contoh penggalan
programnya adalah :
If((access(“c:\coba.txt”,0)) = = 0){
Printf(“file sudah ada”);
}
Pada contoh penggalan program di atas dilakukan pengecekkan apakah
file yang dimaksud ada atau tidak, jika “ya” akan dicetak nilai string yang ada
dimana kondisinya bernilai 0.

2.2.4.2. Mengganti Nama File


Fungsi rename() digunakan untuk mengganti nama suatu file yang sudah
ada di disk. Bentuk umum adalah int rename (const char * naam_lama,
const char * nama_baru);
Selanjutnya semua fungsi yang telah diberikan dapat dikembangkan
untuk membuat suatu program bahasa C dalam operasi file yang lebih lengkap
dan utuh.
Contoh lain program pembacaan text :
[Algoritma dan Struktur Data – Muhamad Fahmi Alwi] II-7

/* filedat.c */
/* membaca dan menulis text file */
/* separator adalah blank */
/* Data berupa string tidak boleh mengandung blank!!! */

#include <stdio.h>
int main()
{/* Kamus */
int n;
char nama[20];
float persen;
int retval;
FILE *fileku;

/* Algoritma */
fileku = fopen ("filedat.txt", "r");
retval = fscanf (fileku, "%d %s %f", &n, nama, &persen);
while (retval != EOF)
{
printf("Data : %d %s %f \n", n, nama, persen);
retval = fscanf(fileku, "%d, %s, %f", &n, nama,
&persen);
}
printf("\n bye....");
fclose(fileku);
return 0;
}

2.3. Hasil dan Pembahasan


a. Dari contoh di atas, buatlah file (filedata.txt) yang berisi informasi mengenai
biodata pribadi secara lengkap!
Jawaban :
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <string.h>

void
[Algoritma dan Struktur Data – Muhamad Fahmi Alwi] II-8

main ()
{
char namafileoutput[]="filedata.txt";
char teks[80];

FILE *fout;
fout=fopen(namafileoutput,"w");
cout<<"Masukkan BIODATA anda "
<<"ke file, akhiri dengan END\n";

while(1) {
gets(teks);
if (strcmp(teks,"END")==0)
break;
strcat(teks,"\n");
fputs(teks,fout);
}
fclose(fout);
cout<<"selesai"<<endl;
getch();
}
Tampilan program :

Gambar 2.2 Tampilan Ketika Program Biodata di Run

Gambar diatas merupakan tampilan program ketika di Run, maka kita isi
program tersebut dengan BIODATA, dan diakhiri dengan mengetikan kata END
sebagai akhir dari proses memasukan data ke file “filedata.txt”. (Lihat Gambar
2.3).
[Algoritma dan Struktur Data – Muhamad Fahmi Alwi] II-9

Gambar 2.3 Tampilan Mengisi Biodata

Gambar 2.4 Isi file “filedata.txt”


Analisis :
Program tersebut merupakan program untuk memasukan kalimat/biodata
kedalam suatu file. Pada praktikum ini, adalah mahasiswa harus memasukan
biodata kedalam file “filedata.txt” (Gambar 2.4), sesuai dengan instruksi soal pada
modul praktikum. Pada akhir program ini, isi file “filedata.txt” harus sesuai/sama
dengan data yang dimasukan ketika program dijalankan (Gambar 2.3). ketika
seorang user akan memasukan data kedalam file tersebut, user harus
mengakhirinya dengan mengetikkan “END” sebagai akhir dari pengisian file
tersebut. Kode program “Cout << “ berfungsi untuk menampikan tampilan,
kemudian kode program if “ (strcmp(teks,"END")==0) “ bertujuan supaya ketika
user mengetikan END kemudian tekan enter, proses inputan secara otomatis
dihentikan dan langsung menyimpannya.

Contoh program membuat dan membaca kembali file filein.dat


/* fileint.c */
/* membuat dan membaca kembali file yang setiap rekamannya
[Algoritma dan Struktur Data – Muhamad Fahmi Alwi] II-10

adalah
integer */

#include <stdio.h>
int main()
{ /* Kamus */
int i;
int rek;
int retval;
FILE *fileku;

/* Algoritma */
/* Membuat */
fileku = fopen ("filein.dat", "w");
for (i = 1; i < 5; i++);
{ /* perhatikan format penulisan */
retval = fprintf(fileku, "%d", i);
}
printf("\n Selesai membuat ...");
fclose(fileku);

/* Membaca kembali */
fileku = fopen("fileku.dat", "r");
retval = fscanf(fileku, "%d", &rek); /* harus sama
dengan ketika dibuat */
printf("%d", rek);
while(retval !=EOF)
{
printf("Yang dibaca : %d \n", rek);
retval = fscanf(fileku, "%d", &rek);
}
printf("\n Bye...");
fclose(fileku);
return 0;
}

b. Berdasarkan contoh program di atas, buatlah program yang menuliskan dan


membaca file (filebiodata.dat) yang berisi informasi mengenai data-data
rekan-rekan kalian satu kelas!

Anda mungkin juga menyukai