FILE INPUT/OUTPUT Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN - 2008 Overview Definisi Lingkup Sistem File File Pointer Membuka File Menutup File Menulis sebuah karakter Membaca sebuah karakter 2 Kuliah Minggu ke 20 1
File I/O: Definisi Perekaman data ke dalam media rekam, pembacaan data dari media rekam itu dan penghapusan data. File: Rekaman data di dalam media rekam. 3 Lingkup File I/O yang didefinisikan dalam standard sistem file ANSI C. Biasa disebut buffered (high level) file system. Prosedur pokok operasi File I/O Membuka file untuk membaca isi (reading) Membuka file untuk merekam (writing) Membuka file untuk menambahi rekaman (appending) Bentuk rekaman data di dalam media rekam: Dalam bentuk kode biner (binary file) Dalam bentuk kode ASCII (text file) 4 Kuliah Minggu ke 20 2
Sistem File Sistem file ANSI C terdiri dari sejumlah fungsi File I/O. Berikut adalah fungsi-fungsi yang umum digunakan. Nama fopen() fclose() putc() atau fputc() getc() atau fgetc() feof() fprintf() fscanf() rewind() ferror() remove() fseeks() Fungsi Membuka file Menutup file Menulis karakter ke file Membaca karakter dari file Return true jika end-of-file printf() ke file scanf() ke file Reset posisi file ke awal Return true jika error Hapus file Mencari byte di file 5 Sistem File Prototype fungsi diberikan di file header STDIO.H. STDIO.H juga mendefinisikan type FILE yaitu sebuah struktur khusus yg anggotanya menggambarkan keadaan sebuah file. 6 Kuliah Minggu ke 20 3
File Pointer File pointer adalah variable pointer dari type FILE. Untuk membaca atau menulis file program memerlukan file pointer. Statement untuk membuat file pointer: FILE *fp; fp = nama file pointer 7 Membuka File FILE *fopen(const char *filename, const char *mode); fopen() mengembalikan file pointer, jika gagal membuka file, akan mengembalikan NULL. filename = pointer ke string karakter mode = menunjukkan bagaimana file dibuka 8 Kuliah Minggu ke 20 4
Mode Untuk Membuka File Mode Text Binary r rb w wb a ab Mode Text Binary r+ r+b w+ w+b a+ a+b Tujuan Buka file untuk baca Buat file untuk tulis (rekam) Tambahkan ke file Tujuan Buka file untuk baca/tulis Buat file untuk baca/tulis Tambahkan file untuk baca/tulis 9 Contoh FILE *fp; if((fp = fopen( test, w )) == NULL){ printf( Tidak bisa buka file\n ); 10 Kuliah Minggu ke 20 5
Menutup File int fclose(file *fp); Operasi menutup file berhasil bila mengembalikan nilai nol. 11 Menulis Sebuah Karakter int putc(int ch, FILE *fp); fp = file pointer yang dikembalikan oleh fopen() ch = karakter untuk jadi output jika operasi berhasil mengembalikan karakter yang ditulis, jika tidak mengembalikan EOF. 12 Kuliah Minggu ke 20 6
Membaca Sebuah Karakter int getc(file *fp); fp = file pointer yang dikembalikan oleh fopen() jika operasi mencapai akhir dari sebuah file akan mengembalikan EOF. do{ ch = getc(fp); while(ch!=eof); 13 Contoh 1: Menggunakan fopen(), getc(), putc(), dan fclose() Program ini membaca karakter dari keyboard dan menulisnya ke disk file sampai pengguna mengetik tanda dollar. /* Program untuk menulis ke file */ #include <stdio.h> #include <stdlib.h> void main(int argc, char *argv[]) { FILE *fp; char ch; if(argc!=2){ printf("anda lupa memasukan nama file\n"); 14 Kuliah Minggu ke 20 7
Contoh 1: Lanjutan if((fp=fopen(argv[1],"w"))==null){ printf("tidak bisa buka file\n"); do { ch = getchar(); putc(ch,fp); while(ch!='$'); fclose(fp); 15 Contoh 2: Menggunakan fopen(), getc(), putc(), dan fclose() Program berikut membaca file ASCII dan menampilkan isi pada layar /* Program untuk membaca file dan menampilkannya pada layar */ #include <stdio.h> #include <stdlib.h> void main(int argc, char *argv[]) { FILE *fp; char ch; if(argc!=2){ printf("anda lupa memasukan nama file\n"); 16 Kuliah Minggu ke 20 8
Contoh 2: Lanjutan... if((fp=fopen(argv[1],"r"))==null){ printf("tidak bisa buka file\n"); ch = getc(fp); /* baca satu karakter */ while(ch!=eof){ putchar(ch); /* cetak pada layar */ ch = getc(fp); fclose(fp); 17 Penggunaan feof() EOF mempunyai nilai integer, jika file dibuka untuk input biner bisa mendapatkan kondisi endof-file padahal belum mencapai akhir file. Dengan feof() menentukan kapan akhir dari file dicapai ketika pembacaan sebuah binary file (bisa diterapkan pada text file juga). int feof(file *fd); mengembalikan true jika menemukan akhir file dan mengembalikan 0 jika tidak. 18 Kuliah Minggu ke 20 9
Contoh Penggunaan feof() /* Mengcopy sebuah file */ #include <stdio.h> #include <stdlib.h> void main(int argc, char *argv[]) { FILE *in, *out; char ch; if(argc!=3){ printf("anda lupa memasukan nama file\n"); if((in=fopen(argv[1],"rb"))==null){ printf("tidak bisa buka file input\n"); 19 Contoh: Lanjutan.. if((out=fopen(argv[2],"wb"))==null){ printf("tidak bisa buka file output\n"); while(!feof(in)){ ch = getc(in); if(!feof(in)) putc(ch, out); fclose(in); fclose(out); 20 Kuliah Minggu ke 20 10
Fungsi fprintf() dan fscanf() Merupakan versi file dari printf() dan scanf() int fprintf(file *fp, const char *format,...); int fscanf(file *fp, const char *format,...); fprintf(stdout, ); sama dengan printf( ); fscanf(stdin, ); sama dengan scanf( ); 21 Contoh /* Contoh pemakaian fscanf() dan fprintf() */ #include <stdio.h> #include <io.h> #include <stdlib.h> void main(void) { FILE *fp; char s[80]; int t; if((fp=fopen("test","w")) == NULL) { printf("tidak bisa buka file\n"); 22 Kuliah Minggu ke 20 11
Contoh printf("masukkan string dan bilangan: "); /* baca dari keyboard */ fscanf(stdin, "%s%d", s, &t); /* tulis ke file */ fprintf(fp, "%s %d", s, t); fclose(fp); printf("masukkan string dan bilangan: "); /* baca dari keyboard */ fscanf(stdin, "%s%d", s, &t); /* tulis ke file */ fprintf(fp, "%s %d", s, t); fclose(fp); 23 Contoh if((fp=fopen("test","r")) == NULL) { printf("tidak bisa buka file\n"); /* baca dari file */ fscanf(fp, "%s%d", s, &t); /* cetak ke layar */ fprintf(stdout, "%s %d", s, t); 24 Kuliah Minggu ke 20 12
SELESAI 25 Kuliah Minggu ke 20 13