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 w a rb wb ab r+ w+ a+ r+b atau rb+ w+b atau wb+ a+b atau ab+
Membuka sebuah file teks untuk pembacaan Membuat sebuah file teks untuk penulisan Menambahkan (append) data ke sebuah file teks Membuka sebuah file binary untuk pembacaan Membuat sebuah file binary untuk penulisan Menambahkan data ke sebuah file binary Membuka sebuah file teks untuk pembacaan/penulisan Membuat sebuah file teks untuk pembacaan/penulisan Menambahkan data/membuat file teks untuk pembacaan/penulisan Membuka sebuah file binary untuk pembacaan/penulisan Membuat sebuah file binary untuk pembacaan/penulisan 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 dan ofp adalah pointer ke FILE
ifp = fopen("input_file","r"); ofp =fopen("output_file","w"); : :
• 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
#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 (fscanf(ifp,"%d",&a)==1){ sum += a; } fprintf(ofp, "Jumlah = %d\n",sum);
while((c=fgetc(fp)) != EOF){ putchar(toupper(c)); } fclose(fp); return EXIT_SUCCESS;
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 #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