Minggu ke-13 Berkas (File) Pendahuluan File merupakan unit standar penyimpanan data yang menggunakan konsep stream dalam pengaksesannya. Stream merupakan penghubung antara programmer dengan file. Sebuah stream terhubung dengan file melalui operasi open dan terputus dari file melalui operasi close. Ada dua jenis stream: text (tipe data karakter) dan biner (tipe data binari). Minggu ini, FILE dan stream text akan dibahas. Objektif Memperkenalkan struktur data file Menjelaskan cara membuka, mengakses dan menutup file. Bahan Bacaan Buku pegangan atau buku-buku lain yang menjelaskan tentang topik ini. Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 1
File Stream terhubung dengan file melalui operasi open dan terputus dari file melalui operasi close. Perintah membuka file dilakukan dengan fungsi fopen (library stdio.h) dan perintah menutup file dilakukan dengan fungsi fclose. FILE *fopen(char *nama_file, char *mode) FILE *fclose(file *pointer_file) Mode merupakan cara pengaksesan file. Berikut daftar mode yang dapat digunakan: Mode Arti r Membuka sebuah file teks untuk pembacaan w Membuat sebuah file teks untuk penulisan a Menambahkan (append) data ke sebuah file teks rb Membuka sebuah file binary untuk pembacaan wb Membuat sebuah file binary untuk penulisan ab Menambahkan data ke sebuah file binary r+ Membuka sebuah file teks untuk pembacaan/penulisan w+ Membuat sebuah file teks untuk pembacaan/penulisan a+ Menambahkan data/membuat file teks untuk pembacaan/penulisan r+b atau rb+ Membuka sebuah file binary untuk pembacaan/penulisan w+b atau wb+ Membuat sebuah file binary untuk pembacaan/penulisan a+b atau ab+ Menambahkan data ke file binary untuk pembacaan/penulisan Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 2
Contoh Manipulasi File Perhatikan Penggalan Program berikut : FILE *ifp, *ofp; ifp = fopen("input_file","r"); ofp =fopen("output_file","w"); : : ifp dan ofp adalah pointer ke FILE ifp tunjuk ke file input_file dan file ini hanya dapat dibaca saja (read-only) dan tidak dapat ditulisi Penjelasan ofp tunjuk ke file output_file dan file ini dibuat bila sebelumnya tidak ada dan ditimpa bila sudah ada sebelumnya Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 3
Contoh Manipulasi File (Lanjutan) Contoh #include <ctype.h> #include <stdio.h> #include <stdlib.h> int main (void){ int c; FILE *fp; char *filename = "data.txt"; #include <stdio.h> int main (void){ int a, sum = 0; FILE *ifp, *ofp; ifp = fopen("input_file.txt", "r"); ofp = fopen("output_file.txt", "w"); if((fp = fopen(filename, "r"))==null){ printf("error reading file...\n"); return EXIT_FAILURE; while((c=fgetc(fp))!= EOF){ putchar(toupper(c)); fclose(fp); return EXIT_SUCCESS; while (fscanf(ifp,"%d",&a)==1){ sum += a; fprintf(ofp, "Jumlah = %d\n",sum); fclose(ifp); fclose(ofp); return 1; Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 4
File (Lanjutan) #include <ctype.h> #include <stdio.h> #include <stdlib.h> int main(void){ FILE *fp; int ch; fp = fopen("output_file.txt", "w"); fprintf(fp, "%s", "Program Studi Informatika\n"); fprintf(fp, "%s", "Universitas Syiah Kuala, Banda Aceh 23111\n\n\n"); fclose(fp); if((fp = fopen("output_file.txt", "r"))==null) { printf("error reading file...\n"); return EXIT_FAILURE; while ((ch=fgetc(fp))!=eof) { putchar(tolower(ch)); fclose(fp); return EXIT_SUCCESS; Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 5
File (Lanjutan) Fungsi untuk Manipulasi File Teks fgetc() dan fputc() Sintaks: int fgetc(file *fp); int fputc(int ch, FILE *fp); fgets() dan fputs() Sintaks: int fputs(char *str, FILE *fp); char *fgets(char *str, int num, FILE *fp); Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 6