Silabus File IO Menuliskan data ke file Membaca data dari file
PTI-B FTI 2011 2
TESTING PROGRAM Pengetesan program Memerlukan Input Data Mengamati Output Biasanya Input Data keyboard Output Data layar Jika jumlah datanya besar/banyak, akankah kita sanggup/siap memasukan data lewat keboard dan mengamati data di layar BERKALI-KALI
GUNAKAN FILE I/O
PTI-B FTI 2011 3 FILE I/O Ada 2 jenis file di C Text File Binary File Keduanya dibaca/ditulis sebagai aliran (stream) dari karakter File dibaca/ditulis karakter-perkarakter sesuai dengan INDIKATOR posisi INDIKATOR posisi diset diawal file pada saat awal pembacaan/penulisan dan dapat dipindahkan ke suatu tempat berdasarkan perintah dalam program
PTI-B FTI 2011 4
FILE I/O Text file berisi rangkaian karakter yang tersusun dalam rangkaian baris tek. Tiap baris dapat berisi karakter sampai 255 karakter dan diakhiri dengan karakter „newline‟ (\n). Ada karakter-karakter yang memiliki arti tertentu yang harus diinterpretasi secara khusus Data text dapat dibaca di flatform/mesin manapun. Data binary dapat menyimpan data terurut termasuk data tek. Pembacaan data binary umumnya tergantung dari flatform/mesin dimana data itu dibuat Hanya akan membahas Text File
PTI-B FTI 2011 5
KOMUNIKASI DATA DGN FILE Urutan penulisan/pembacaan data ke/dari file Deklarasikan variabel file Open file Menuliskan/Membaca data ke/dari file Close file
PTI-B FTI 2011 6
DEKLARASI VARIABEL FILE Deklarasi variabel FILE yang merupakan POINTER ke file : FILE *< pointer file >; FILE adalah tipe data/struktur yang didefinisikan di dalam stdio.h. FILE akan menyimpan semua informasi yang berhubungan dengan file
PTI-B FTI 2011 7
OPEN FILE < pointer file > = fopen(char nama_file, char mode); nama file termasuk lokasi direktori dimana file itu disimpan Mode Arti r file yang dibuka hanya bisa dibaca saja r+ file yang dibuka bisa dibaca dan ditulis file yang dibuka hanya bisa ditulis saja, jika nama file yang sama sudah ada w maka file yang lama akan terhapus diganti dengan yang baru file yang dibuka bisa dibaca dan ditulis, jika nama file yang sama sudah ada w+ maka file yang lama akan terhapus diganti dengan yang baru pada file yang dibuka hanya dapat ditambahkan data saja mulai dari akhir a data yang ada. Jika nama file yang bersesuaian tidak ada maka file baru akan dibuat pada file yang dibuka dapat dibaca dan ditambahkan data. Jika nama file a+ yang bersesuaian tidak ada maka file baru akan dibuat
Return type fopen : jika sukses “pointer file”, jika gagal NULL
PTI-B FTI 2011 8
CLOSE FILE Semua file yang dibuka setelah selesai harus ditutup fclose(<pointer file>); fungsi ini akan mengembaikan nilai 0 jika sukses dan EOF jika gagal Jika sampai akhir program tidak dijumpai perintah ini, maka program akan dengan sendirinya menutup semua file yang sedang dibuka ketika mengakhiri eksekusi program
PTI-B FTI 2011 9
MENULISKAN DATA KE FILE putc, fputs dan fprintf merupakan fungsi-fungsi di pustaka stdio.h yang dapat dipakai untuk menuliskan data ke file. putc( <karakter>, < pointer file> ); Menuliskan 1 karakter, return karakter jika sukses dan return EOF jika gagal fputs( <string / array karakter>, <pointer file> ); Menuliskan 1 baris string, return string jika sukses dan return EOF jika gagal fprintf(<pointer file>, <string format data>, <daftar variabel>) ; Menuliskan data secara terformat, return bilangan positif jika sukses dan return bilangan negatif jika gagal
PTI-B FTI 2011 10
CONTOH PEMAKAIAN putc #include <stdio.h> void main() { FILE *p_file; //pointer file p_file = fopen(“data_putc.dat”, “w”);//file data_putc.dat berada satu direktori dgn file program
int i; char string[ ]=“Menyimpan data dengan putc”;
for (i = 0; i < 100; i++)
{ if (string[i] == '\0') //test akhir dari string { putc('\n', p_file); break; } else putc(string[i], p_file); //tuliskan karakter berikutnya } fclose(p_file); return 0; }
MEMBACA DATA DARI FILE getc, fgets dan fscanf merupakan fungsi-fungsi di pustaka stdio.h yang dapat dipakai untuk membaca data dari file. <char variabel> = getc( < pointer file > ); Membaca 1 karakter, return karakter jika sukses dan return EOF jika gagal fgets(<string>, <max panjang string>, <pointer file>); Membaca 1 baris string, return string jika sukses dan return EOF jika gagal fscanf(<pointer file>, <string format data>, <daftar variabel>) ; Membaca data secara terformat, return bilangan bulat jika sukses dan return EOF jika gagal
PTI-B FTI 2011 14
CONTOH PEMAKAIAN getc #include <stdio.h> #include <stdlib.h> //untuk exit(1) main() { FILE *p_file; //pointer file int karakter;// menyimpan bilangan ASCII dr karakter
p_file = fopen(“data_putc.dat”, “r”);
if (p_file == NULL) { printf (“file tidak ada”); exit(1); //keluar dari program } karakter = getc (p_file) ; while (karakter != EOF) { putchar (karakter); //data ditampilkan ke layar karakter = getc (p_file); } fclose (p_file); }
FUNGSI-FUNGSI LAINNYA di stdio.h fseek( <pointer file>, <offset>, <awal> ); memilih lokasi serta panjangnya data yang ingin dibaca atau ditulis SEEK_SET Start of file. SEEK_CUR Current location. SEEK_END End of file. rewind(<file_pointer>); Mengembalikan posisi INDIKATOR posisi ke awal file rename(<nama_file_lama>, <nama_file_baru>); Mengganti nama file remove(<file_name_string>); Menghapus file