Algoritma dan Pemrograman
6/4/2008
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
Algoritma dan Pemrograman
6/4/2008
Definisi • File I/O: – 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
Algoritma dan Pemrograman
6/4/2008
Sistem File • Sistem file ANSI C terdiri dari sejumlah fungsi File I/O. Berikut adalah fungsi-fungsi yang umum digunakan. Nama
Fungsi
fopen()
Membuka file
fclose()
Menutup file
putc() atau fputc()
Menulis karakter ke file
getc() atau fgetc()
Membaca karakter dari file
feof()
Return true jika end-of-file
fprintf()
printf() ke file
fscanf()
scanf() ke file
rewind()
Reset posisi file ke awal
ferror()
Return true jika error
remove()
Hapus file
fseeks()
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
Algoritma dan Pemrograman
6/4/2008
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
Algoritma dan Pemrograman
6/4/2008
Mode Untuk Membuka File Mode
Tujuan
Text Binary r rb Buka file untuk baca w wb Buat file untuk tulis (rekam) a
ab Mode
Text
Tambahkan ke file Tujuan
Binary
r+
r+b
Buka file untuk baca/tulis
w+
w+b
Buat file untuk baca/tulis
a+
a+b
Tambahkan file untuk baca/tulis 9
Contoh FILE *fp; if((fp = fopen(“test”,”w”)) == NULL){ printf(“Tidak bisa buka file\n”); exit(1); }
10
Kuliah Minggu ke 20
5
Algoritma dan Pemrograman
6/4/2008
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
Algoritma dan Pemrograman
6/4/2008
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"); exit(1); } 14
Kuliah Minggu ke 20
7
Algoritma dan Pemrograman
6/4/2008
Contoh 1: Lanjutan… if((fp=fopen(argv[1],"w"))==NULL){ printf("Tidak bisa buka file\n"); exit(1); } 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"); exit(1); } 16
Kuliah Minggu ke 20
8
Algoritma dan Pemrograman
6/4/2008
Contoh 2: Lanjutan... if((fp=fopen(argv[1],"r"))==NULL){ printf("Tidak bisa buka file\n"); exit(1); } 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
Algoritma dan Pemrograman
6/4/2008
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"); exit(1); } if((in=fopen(argv[1],"rb"))==NULL){ printf("Tidak bisa buka file input\n"); exit(1); } 19
Contoh: Lanjutan.. if((out=fopen(argv[2],"wb"))==NULL){ printf("Tidak bisa buka file output\n"); exit(1); } while(!feof(in)){ ch = getc(in); if(!feof(in)) putc(ch, out); } fclose(in); fclose(out); }
20
Kuliah Minggu ke 20
10
Algoritma dan Pemrograman
6/4/2008
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
#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"); exit(1); } 22
Kuliah Minggu ke 20
11
Algoritma dan Pemrograman
6/4/2008
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"); exit(1); } /* baca dari file */ fscanf(fp, "%s%d", s, &t); /* cetak ke layar */ fprintf(stdout, "%s %d", s, t); }
24
Kuliah Minggu ke 20
12
Algoritma dan Pemrograman
6/4/2008
SELESAI
25
Kuliah Minggu ke 20
13