Bab 7 – File_______________________________________________________________109
BAB 7 FILE TUJUAN PRAKTIKUM 1. Praktikan dapat memahami operasi File yang ada dalam pemograman Bahasa C
TEORI PENUNJANG Seringkali untuk program-program aplikasi system informasi, data perlu disimpan secara pemanen utuk 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 fie. Manipulasi file melibatkan operasi pengecekan keberadaan file di disk, mengganti nama, menghapus file, dan lain- lain.
7.1 Membuka file Suatu file di disk harus dibuka sebelum digunakan dapat dilakukan dengan fungsi pustaka fopen(). Hasil dari pembukaan file ini akan didapatkan suatu nilai pointer denga 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:
Modul Praktikum Algoritma & Pemrograman 3 – IT045123
Bab 7 – File_______________________________________________________________110
Tabel 7.1 Mode dalam bahasa C Mode
Arti
“r”
Membuka file yang telah ada untuk dibaca. Jika file belum ada, pembuakaan file tidak akan berhasil dan funsi fopen akan bernilai 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 diletakan di akhir file. Jika file belum ada akan dibuat file baru.
“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
Contoh program: #include<stdio.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(); }
Pada contoh program di atas digunakan untuk mencoba fungsi pustaka fopen(). Program di atas dapat berjalan jika terdapat file coba.txt saat pertama
jangan buat file tersebut dahulu 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 dinginkan atau terjadi kesalahan nilai pointer PF akan bernilai NULL.
Modul Praktikum Algoritma & Pemrograman 3 – IT045123
Bab 7 – File_______________________________________________________________111
7.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 *ponter-file);
Contoh program: #include<stdio.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.
7.3 Meletakan data ke penyangga Bahasa C membedakan lima macam bentuk data untuk diletakan di penyangga (buffer), yaitu karakter, integer, string, terformat, dan blok data. Untuk masing- masing data ini fungsi pustaka yang digunakan berbeda yaitu sebagai berikut:
Modul Praktikum Algoritma & Pemrograman 3 – IT045123
Bab 7 – File_______________________________________________________________112
Tabel 7.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
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); }
Modul Praktikum Algoritma & Pemrograman 3 – IT045123
Bab 7 – File_______________________________________________________________113
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 syntax selanjunya dilakukan penangkapan karakter yang di input melalui keyboard dengan C=getche() ini akan terus dilakukan hingga ditekan Enter dikarenakan dilakukan looping dengan sintaks while((C=getche())!=’\r’) karakter ‘\r’ 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 main() { FILE *PF; char C; if((PF=fopen(“coba.txt”,”r”))= = NULL){
printf(“file tidak dapat dibuka”); exit(1); } while((C=fgetc(PF))!= EOF) putchar(C); 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
Modul Praktikum Algoritma & Pemrograman 3 – IT045123
Bab 7 – File_______________________________________________________________114
looping yang berfungsi memasukan 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.
7.4 Manipulasi file Bagian ini akan membahas bagian memanipulasi suatu file yang tidak melibatkan proses I/O seperti: 7.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 char* 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”); }
Modul Praktikum Algoritma & Pemrograman 3 – IT045123
Bab 7 – File_______________________________________________________________115
Pada contoh penggalan program di atas dilakukan pengecekan apakah file yang dimaksud ada atau tidak, jika “ya” akan dicetak nilai sting yang ada dimana kondisinya bernilai 0.
7.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 * nama_lama, const char * nama_baru)
4.4.3 Menghapus file Fungsi menghapus file dapat dilakukan dengan unlink() bentuk lengkapnya adalah sebagai berikut: int unlink( const char * path)
Selanjutnya semua fungsi yang telah diberikan dapat dikembangkan untuk membuat suatu program bahasa C dalam operasi file yang lebih lengkap dan utuh.
Modul Praktikum Algoritma & Pemrograman 3 – IT045123