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. Dalam bahasa pemrograman C, terdapat dua jenis stream: teks (ASCII) dan binari. Minggu ini, FILE dan stream jenis teks akan dibahas. Objektif Memperkenalkan struktur data file Menjelaskan cara membuka, mengakses, dan menutup file Membaca dan menulis data dalam file tipe teks Bahan Bacaan Buku pegangan atau bahan-bahan lain yang menjelaskan tentang FILE dalam bahasa pemrograman C. Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 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. Prototipe kedua fungsi ini berada dalam stdio.h FILE * fopen(char * nama_file, char * mode) FILE * fclose(file * pfile) Mode merupakan cara pengaksesan file. Berikut daftar mode yang dapat digunakan: Mode Arti r Membuka file teks untuk dibaca saja (read only) w Membuat sebuah file teks untuk kemudian ditulisi a Menambah (append) data ke dalam sebuah file teks tanpa menimpa yang ada rb Membuka sebuah file binary untuk dibaca saja (read only) wb Membuat sebuah file teks untuk kemudian ditulisi ab Menambah (append) data ke dalam sebuah file binari tanpa menimpa yang ada 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 Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 2
Contoh Manipulasi File Membuka/Membuat File 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), tidak untuk ditulisi ofp tunjuk ke file output_file. File ini akan dibuat bila sebelumnya tidak ada dan akan ditimpa bila sebelumnya sudah ada dalam direktori Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 3
Contoh Manipulasi File #include <ctype.h> #include <stdio.h> #include <stdlib.h> int main (void){ int c; FILE *fp; char *filename = "data.txt"; 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; Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 4
Contoh Manipulasi File Fungsi fscanf dan fprintf int fscanf ( FILE * stream, const char * format,... ); int fprintf ( FILE * stream, const char * format,... ); Contoh #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"); while (fscanf(ifp,"%d",&a)==1){ sum += a; fprintf(ofp, "Jumlah = %d\n",sum); fclose(ifp); fclose(ofp); return 1; Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 5
#include <ctype.h> #include <stdio.h> #include <stdlib.h> int main(void){ FILE *fp; int ch; Contoh Manipulasi File (Lanjutan) 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; Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 6