CSE1301 Sem 1-2001 4/8/2017 File I/O Lecture 19: File I/O.

Slides:



Advertisements
Presentasi serupa
TURUNAN/ DIFERENSIAL.
Advertisements

Pemrograman Terstruktur
QUIS C++ Siapkan Kertas Selembar, pada kertas tersebut tuliskan:
8. FILE.
File Handling.
FILE pada FORTRAN Pertemuan 9
Menempatkan Pointer Q 6.3 & 7.3 NESTED LOOP.
Input/Output.
SOAL ESSAY KELAS XI IPS.
Algoritma dan Struktur Data
Dasar Pemrograman Komputer
Soal-2. Susun program untuk menginput empat (4) buah bilangan bulat kemudian mencetak salah satu bilangan yang nilainya terbesar: 180.
KONSEP BAHASA PEMROGRAMAN
Pemrograman Dasar[PTI-15001] 2012
Silahkan Salin Jawaban Anda DiKertas Sertakan : NIM. : Nama. : Kelas
Teknik penulisan ilmiah: Tugas akhir S1,S2,S3 Bagaimana membuat: Daftar pustaka otomatis Oleh: D. Erwin Irawan.
Pointer. Output? #include int x = 2; void misteri(int a, int b) { a = 2*x; b = y; y = a; } main() { int y; x = 5; y = 7; misteri(x, y); printf("%d %d\n",
Linked List BEBERAPA CONTOH SOAL 6.3 & 7.3 NESTED LOOP.
Fisika Dasar Oleh : Dody
TURUNAN DIFERENSIAL Pertemuan ke
Modul 6: Abstract Class, abstract method
PERTEMUAN XI OPERASI FILE JURUSAN TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA Oleh : Muh. Zen S. Hadi, ST.
Fungsi (lanjutan) Pertemuan ke-9 Bahasa C.
SEARCHING ( PENCARIAN )
Algoritma dan Struktur Data Daniel Riano Kaparang.
ANOVA DUA ARAH.
Algoritma dan Struktur Data
PERTEMUAN VIII STRUKTUR LANJUT JURUSAN TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA Oleh : Muh. Zen S. Hadi, ST.
//program untuk menulis ke dalam file teks kemudian menampilkan isi file ke layar #include Void main() { const int mak 80; file p; // deklarasi file.
Baca Tulis File Untuk dapat membaca atau menulis data dari/ke sebuah file maka langkah yang perlu dilakukan adalah: membuka file - mendefinisikan variabel.
Baca Tulis File Untuk dapat membaca atau menulis data dari/ke sebuah file maka langkah yang perlu dilakukan adalah: membuka file - mendefinisikan variabel.
8. FILE.
Modul 1- Review Java.
Pemrograman Terstruktur
Kompetensi : LIST #3. 17 Maret Kompetensi 5.
Pemrogramman Terstruktur
INSTRUKSI MASUKAN DAN KELUARAN
Situasi Saat Program Berjalan (Run-time Environment)
ARRAY Dr. Lily Wulandari.
STACK (TUMPUKAN).
Konsep Pemrograman Function.
Algoritma dan Struktur Data
Dasar Pemrograman ARRAY/LARIK.
1 Pointer wijanarto. 2 Topik Introduction to Pointers Pointers dan Parameter Fungsi.
Shofia D. Agustina.  Agar dapat dieksekusi oleh komputer, algoritma harus diterjemahkan terlebih dahulu kedalam notasi bahasa pemrograman. Penerjemahan.
Materi 7 Lintas Data Rekam Baca File. Introduction Lintas data Rekam Baca meliputi perekaman data kedalam media rekam magnetik, pembacaan data dari media.
STRUKTUR DATA recursive function.
I/O Stream lanjutan.
Review-Dasar Pemrograman Komputer
Fungsi Lecture 7. Motivation Complexity of programming problem  more difficult to consider the solution as a whole  clue: dividing the problem into.
Algoritma dan Struktur Data
Dasar Pemrograman Komputer [TKL-4002] 2010
Kompleksitas Algoritma
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 DPK Issa Arwani, S.kom, M.sc.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA
WISNU HENDRO MARTONO,M.Sc
File Data Pertemuan ke 13..
Algoritma & Struktur Data Linked List Evangs Mailoa.
1 Pertemuan Fungsi Matakuliah: T0016 / Algoritma dan Pemrograman Tahun: 2007 Versi: 6.
1. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu :  Mendemonstrasikan penggunaan fungsi serta pengiriman parameter 2.
Matakuliah : T0016 / Algoritma dan Pemrograman Tahun : 2007 Versi : 6
Algoritma dan Pemrograman II STT Wastukancana Purwakarta
Prosedur dan Fungsi Triana Elizabeth, S.Kom.
File & Stream Kegunaan File :
Input dan Output TEE 2103 Algoritma dan Pemrograman
Operasi File Operasi File.
Gambaran Umum dari judul yang kami ajukan adalah :
Baca Tulis File Untuk dapat membaca atau menulis data dari/ke sebuah file maka langkah yang perlu dilakukan adalah: membuka file - mendefinisikan variabel.
Struktur (bag 1).
File & Stream Kegunaan File :
Transcript presentasi:

CSE1301 Sem 1-2001 4/8/2017 File I/O Lecture 19: File I/O

Topik Penanganan file Sequential dlm C Dasar-dasar fungsi File I/O Contoh: Menghitung kata dalam file

Penanganan file dalam C File perlu dibuka/opened sblm di pakai. Di asosiasikan dg "file handler" utk tiap file Metode: read, write, atau append Fungsi File input/output yg di pakai dalam penanganan file (bukan nama file). Perlu ditutup/close setelah di pakai. Fungsi dasar penanganan file: fopen(), fclose(), fscanf(), fprintf().

Contoh File I/O Tulis program dengan: Input daftar nama dari file, misal, names.lst (text file) Hitung jmlh nama dalam list Tandai tiap nama dalam file Output name dan tanda di simpan dalam file names_marks.dat

File I/O (Header) Step 0: Include stdio.h. #include <stdio.h> int main() { ... return 0; }

File I/O (File Pointer) Step 1: Deklarasikan file handler ( file pointer) dg FILE * utk tiap file. int main() { FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; ... return 0; }

File I/O (Open) Step 2: Open file dg fopen(). int main() { FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; inputfile = fopen(“Names.txt”, “r”); outputfile = fopen(“marks.dat”, “w”); currentfile = fopen(“logFile.txt”, “a”); ... return 0; }

File I/O (Open) Step 2: Open file using fopen(). Nama file int main() { FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; inputfile = fopen(“Names.txt”, “r”); outputfile = fopen(“marks.dat”, “w”); currentfile = fopen(“logFile.txt”, “a”); ... return 0; } Nama file

Perhatian: mode "w" berarti meng-overwrites file, jika ada. File I/O (Open) Step 2: Open file using fopen(). Mode r : read w : write a : append int main() { FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; inputfile = fopen(“Names.txt”, “r”); outputfile = fopen(“marks.dat”, “w”); currentfile = fopen(“logFile.txt”, “a”); ... return 0; } Perhatian: mode "w" berarti meng-overwrites file, jika ada.

Mengasosiasikan file handler utk setiap file yg File I/O (Open) Step 2: Open file using fopen(). int main() { FILE *inputfile = NULL; FILE *outputfile = NULL; FILE *currentfile = NULL; inputfile = fopen(“Names.txt”, “r”); outputfile = fopen(“marks.dat”, “w”); currentfile = fopen(“logFile.txt”, “a”); ... return 0; } Mengasosiasikan file handler utk setiap file yg di pakai

File I/O (Error Check) Step 3: Check jika file sudah terbuka dg baik. int main() { FILE *inputfile; inputfile = fopen(“Names.txt”, “r”); if (inputfile == NULL) printf(“Tidak dpt membuka input file\n”); return 1; } ... return 0;

File I/O (Error Check) Step 3: Check jika file sudah terbuka dg baik. File handler Mjd NULL Saat muncul fopen() Error . int main() { FILE *inputfile; inputfile = fopen(“Names.txt”, “r”); if (inputfile == NULL) printf(“Tidak dpt membuka input file\n”); return 1; } ... return 0;

File I/O (Error Check) Step 3: Check jika file sudah terbuka dg baik. int main() { FILE *inputfile; inputfile = fopen(“Names.txt”, “r”); if (inputfile == NULL) printf(“Tidak dpt membuka input file\n”); return 1; } ... return 0; Akhiri program Jika di dalam Fungsi main ( ).

File I/O (Input) Step 4a: Pakai fscanf() utk input. #include <stdio.h> #define MAXLEN 100 int main() { FILE *inputfile = NULL; char name[MAXLEN]; int count; listnames.c

Recall: definisi Macro File I/O (Input) Step 4a: Pakai fscanf() utk input. #include <stdio.h> #define MAXLEN 100 int main() { FILE *inputfile = NULL; char name[MAXLEN]; int count; Recall: definisi Macro

File I/O (Input) Step 4a: Use fscanf() for input. listnames.c /* Asumsikan"names.lst" berisi daftar nama, buka file utk di baca.*/ inputfile = fopen("names.lst", "r"); if (inputfile == NULL) { printf("Error membuka file\n"); return 1; }

File I/O (Input) Step 4a: Use fscanf() for input. listnames.c /* Baca tiap nama dan hitung berapa banyak nama dalam file.*/ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) { count++; printf("%d. %s\n", count, name); } printf("\nJumlah nama yg di baca: %d\n", count); return 0;

Perlu file handler (“stream”), Bukan nama file. File I/O (Input) Step 4a: Pakai fscanf() utk input. listnames.c /* Baca tiap nama dan hitung berapa banyak nama dalam file.*/ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) { count++; printf("%d. %s\n", count, name); } printf("\nJumlah nama yg di baca: %d\n", count); return 0; Perlu file handler (“stream”), Bukan nama file.

File I/O (Input) Step 4a: Use fscanf() for input. Parameter lainya: listnames.c /* Baca tiap nama dan hitung berapa banyak nama dalam file.*/ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) { count++; printf("%d. %s\n", count, name); } printf("\nJumlah nama yg di baca: %d\n", count); return 0; Parameter lainya: Spt scanf() biasa.

File I/O (Input) Step 4a: Use fscanf() for input. listnames.c /* Baca tiap nama dan hitung berapa banyak nama dalam file.*/ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) { count++; printf("%d. %s\n", count, name); } printf("\nJumlah nama yg di baca: %d\n", count); return 0; fscanf() mengembalikan jmlh input item yg di konver dan di-assign dg baik.

File I/O (Input) Step 4a: Use fscanf() for input. listnames.c /* Baca tiap nama dan hitung berapa banyak nama dalam file.*/ count = 0; while ( fscanf(inputfile, "%s", name) == 1 ) { count++; printf("%d. %s\n", count, name); } printf("\nJumlah nama yg di baca: %d\n", count); return 0; Biasanya di cek jika muncul pembacaan atau assignment error, atau end of input file telah di capai.

File I/O (Output) Step 4b: Pakai fprintf() utk output. listnames2.c #include <stdio.h> #define MAXLEN 100 int main() { FILE *inputfile = NULL; FILE *outfile = NULL; char name[MAXLEN]; int count; float mark; /* Asumsikan"names.lst" berisi daftar nama, buka file utk di baca.*/ inputfile = fopen("names.lst", "r"); if (inputfile == NULL) printf("Error membuka file\n"); return 1; } listnames2.c

File I/O (Output) Step 4b: Pakai fprintf() utk output. listnames2.c /* output file "names_marks.dat" berisi daftar nama dan tanda yang diberikan */ outfile = fopen("names_marks.dat", "w"); if (outfile == NULL) { printf("Error membuka output file\n"); return 1; }

File I/O (Output) Step 4b: Pakai fprintf() utk output. listnames2.c /* Baca tiap nama, berikan tanda, dan tulis name dan tandamark ke output file. Juga hitung ada berapa nama dalam file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) { count++; printf(“Masukan tanda untuk %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("Error menulis output file\n"); return 1; } /*** etc ***/ listnames2.c

File handler, Bukan nama file File I/O (Output) Step 4b: Pakai fprintf() utk output. listnames2.c /* Baca tiap nama, berikan tanda, dan tulis name dan tandamark ke output file. Juga hitung ada berapa nama dalam file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) { count++; printf("Masukan tanda untuk %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("Error menulis output file\n"); return 1; } /*** etc ***/ File handler, Bukan nama file

Parameter lainnya: spt printf(). File I/O (Output) Step 4b: Pakai fprintf() utk output. listnames2.c /* Baca tiap nama, berikan tanda, dan tulis name dan tandamark ke output file. Juga hitung ada berapa nama dalam file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) { count++; printf("Masukan tanda untuk %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("Error menulis output file\n"); return 1; } /*** etc ***/ Parameter lainnya: spt printf().

File I/O (Output) Step 4b: Pakai fprintf() utk output. /* Baca tiap nama, berikan tanda, dan tulis name dan tandamark ke output file. Juga hitung ada berapa nama dalam file. */ count = 0; while ( fscanf(inputfile, "%s", name ) == 1 ) { count++; printf("Masukan tanda untuk %s: ", name); scanf("%f", &mark); if ( fprintf(outfile, "%s %f\n", name, mark) <= 0 ) printf("Error menulis output file\n"); return 1; } /*** etc ***/ fprintf() mengembalikan jmlh characters yg ditulis dg benar , atau negative jika muncul error. listnames2.c

File I/O (Close) Step 5: Close file dg fclose() int main() { /*** etc ***/ printf("\n"); printf("Jumlah nama yg di baca: %d\n", count); fclose(inputfile); fclose(outfile); return 0; }

File handler, bukan tanam file. File I/O (Close) Step 5: Close file dg fclose() int main() { /*** etc ***/ printf("\n"); printf("Jumlah nama yg di baca: %d\n", count); fclose(inputfile); fclose(outfile); return 0; } File handler, bukan tanam file.

File I/O (Close) Step 5: Close file dg fclose() int main() { /*** etc ***/ printf("\n"); printf("Jumlah nama yg di baca: %d\n", count); fclose(inputfile); fclose(outfile); return 0; } Bersihkan input buffer. hapus output buffer. fclose() gagal jika file tidak di buka dg baik .

Catatan pada Filename Jika path dtidak di berikan maka program hanya mencari pada direktory aktif. Path Directory nama file : DOS/Windows sysFile = fopen(“C:\\win\\system.ini”, “r”); Path Directory nama file : Unix/linux passFile = fopen(“/usr/etc/passwd”, “r”);

Catatan pada Filename Variable nama file: FILE *outFile = NULL; char someName[MAX_NAME_LEN]; printf(“Masukan output nama file: ”); scanf(“%s”, someName); outFile = fopen(someName, “w”);

File I/O dan Stream Recall: stream melayani sebagai channel utk mengirimkan karakter antara I/O devices dan program. Standard streams: stdin, stdout, stderr file handler/pointer melayani sbg stream ke/dari file. Sekali item di baca dari input stream, file position bergerak otomatis, dan item selanjutnya (jika ada) mjd item yang selanjutnya di baca ("sequential access").

Catatan pd Strings dan fscanf() Membaca dalam string: fscanf(stream, “%s”, string) Membaca hanya sebuah “kata" saat itu. Kata di pisahkan oleh white-space: (space, tab, newline, atau kombinasinya) Bergerak ke kata selanjutnya scr otomatis setelah pembacaan. scanf(“%s”, string) Sama, kecuali, input stream-nya adalah stdin.

Checking EOF Baik scanf() dan fscanf() mengembalikan: Jmlh input item yg diconvert dan di-assign dg benar. atau nilai konstant EOF saat muncul error atau end-of-file , but... Not recommended! count = 0; while ( fscanf(inputfile, "%s", name) != EOF ) { count++; printf("%d. %s\n", count, name); }

Checking EOF Perhatian! Pakai EOF dengan hati-hati! Dpt menyebabkan masalah jika conversion specifiers tidak sama dengan isi file while ( fscanf(inpf, "%s %f", name, &mark) != EOF ) { printf("%s\t %f\n", name, mark); } listmarks.c inpf: Jake absent Contoh:

Checking EOF Utk menge-check end-of-file (atau input error), check jmlh item/number of items yg di-convert dan di-assign dg baik apakah equal dg jmlh item yang dihrpkan/expected while ( fscanf(inpf, "%s %f", name, &mark) == 2 ) { printf("%s\t %f\n", name, mark); } listmarks.c

Checking EOF Utk menge-check end-of-file (atau input error), check jmlh item/number of items yg di-convert dan di-assign dg baik apakah equal dg jmlh item yang dihrpkan/expected Sama utk scanf(). if ( scanf("%d %d %d", &page, &row, &col) != 3 ) { printf( "I cannot go on without 3 integers :-( \n" ); exit(1); } testscanf1.c

Checking EOF To check for end-of-file (or any other input error), check that the number of items converted and assigned successfully is equal to the expected number of items. Fungsi exit() menyebabkan program berhenti segera. Perlu #include <stdlib.h> if ( scanf("%d %d %d", &page, &row, &col) != 3 ) { printf( "I cannot go on without 3 integers :-( \n" ); exit(1); }

Contoh: Hitung Kata WriTulis program utk menghitung kata dalam file.

Hitung Kata: Algorithm Tanya nama yg di cari user dlm buka file check jika file sukses di buka Hitung jmlh kata dlm file Cetak jumlahnya Tutup file Duh?

Hitung Kata: Algorithm Utk menghitung jmlh kata dalam file: set count to 0 loop { baca kata dari file jika saat membaca kata gagal maka { exit loop } tambahkan 1 ke count } Aku akan melakukannya dg sebuah fungsi

Function: countWords() Prototipe Function: int countWords ( FILE *inpf ); Deskripsi: Fungsi ini mengembalikan jmlh kata dalam input stream inpf.

Function: countWords() PRE-Condition: Diasumsikan bhw inpf adlh pointer ke file yg di buka dg baik. Diasumsikan bhw posisi file berada pad awal input file/stream. Bahwa “kata" berarti tiap string karakter, yg dipisahkan dg whitespace (space, tab, newline, atau kombinasinya). Diasumsikan bhw tidak ada katadlm file yang panjangnya lebih dari (MAXLEN - 1) karakter.

Function: countWords() PRE-Condition: Diasumsikan bhw inpf adlh pointer ke file yg di buka dg baik. Diasumsikan bhw posisi file berada pad awal input file/stream. Bahwa “kata" berarti tiap string karakter, yg dipisahkan dg whitespace (space, tab, newline, atau kombinasinya). Diasumsikan bhw tidak ada katadlm file yang panjangnya lebih dari (MAXLEN - 1) karakter. We will use a #define to set the value of MAXLEN. (See countwords.h)

Function: countWords() POST-Conditions: Pada akhir fungsi, posisi file berada pada end of file. Fungsi mengembalikan nilai integer yaitu jumlah kata dalam file.

Function: countWords() int countWords ( FILE *inpf ) { char word[MAXLEN]; int count = 0; while ( fscanf(inpf, "%s", word) == 1 ) count++; } return count; countwords.c

Count Words: Algorithm Tanyakan user nama file yg akan di buka Buka file check jika file sudah terbuka sukses Hitung jumlah kata dalam file Cetak jumlahnya Tutup file Buat fungsi yg dapat di pakai lagi di sini

Function: openInput() Function prototype: FILE* openInput ( void ); Deskripsi: Fungsi ini tetap menanyakan user mengenai nama file, hinga dapat di buka sebagai inputan.

Function: openInput() PRE-Condition: Diasumsikan nama file cukup dalam ukuran string dari MAXLEN (termasuk '\0').

Function: openInput() POST-Conditions: Program berhenti nila user memilih membatalkan operasi. Kembalikan file handler/pointer utk file yang di tentukan. Diasumsikan pemanggilan fungsi memiliki variabel yang berhubungan utk mendapatkan nilai yang dikembalikan. Juga diasumsikan pemanggilan fungsi juga menangani penutupan file.

countwords.c FILE* openInput ( void ) { FILE *handle = NULL; char theFile[MAXLEN]; int option; while (1) printf("Enter file name: "); scanf("%s", theFile); if ((handle = fopen(theFile, "r")) == NULL ) /*Insert kode utk menangani error pembukaan file */ } else break; return handle;

Code utk menangani error pembukaan file: printf("Error membuka file.\n"); option = 0;/*Set default utk membatalkan.*/ printf("\nKetik 1 utk mencoba lagi, "); printf(“atau angka lain utk membatalkan: "); scanf("%d", &option); printf("\n"); if ( option != 1 ) { printf(“Baik lalu. "); printf("Program Selesai.\n"); exit(1); } countwords.c

Algorithm Utama set file utk menghasilkan openInput() set count utk menghasilkan countWords(file) Cetak jumlah count tutup file

Test Program #1 testcount1.c #include <stdio.h> #include <stdlib.h> #include "countwords.h" #include "countwords.c" int main() { FILE *inputFile = NULL; int count; inputFile = openInput(); count = countWords(inputFile); printf("\nAda %d kata dalam file.\n", count); fclose(inputFile); return 0; } testcount1.c

Test Program #2 #include <stdio.h> #include <stdlib.h> #include "countwords.h" #include "countwords.c" int main() { FILE *inputFile = NULL; int count; inputFile = openInput(); count = countWords(inputFile); printf("\nAda %d kata dalam file.\n", count); fclose(inputFile); return 0; } Apa hslnya jika panggil fungsi countWords() dua kali pd file yg sama? testcount2.c

Fungsi rewind() Kita dapat memakai fungsi rewind(stream) utk me-re-set posisi file pada start/awal input file lagi. Catatan: Pada setiap posisi filekita harus melakukan random access file I/O (tidak di bahas pad kuliah ini).

Test Program #3 testcount3.c #include <stdio.h> #include <stdlib.h> #include "countwords.h" #include "countwords.c" int main() { FILE *inputFile = NULL; int count; inputFile = openInput(); count = countWords(inputFile); printf("\nAda %d kata dalam file\n", count); rewind(inputFile); fclose(inputFile); return 0; } testcount3.c

Fungsi fgets() Utk Membaca baris dr text: fgets(string, size, stream) Membaca sebanyak (size - 1) character dr stream dan menyimpannya ke dalam String. Pembacaan berhenti setelah EOF atau baris baru/ newline. Jika newline/baris baru di baca, fungsi tsb menyimpannya kedalam string. '\0' disimpan setelah karakter terakhir ke dalam string. Mengembalikan NULL (double `L’!) jika error atau eof ketika tidak ada karakter yang di baca lagi

Dpt sbg file pointer (input stream). Fungsi fgets() Dpt sbg file pointer (input stream). Contoh: char name[10]; fgets(name, 10, stdin); input: Hsiu Lin(Enter key) H s i u L n name \n \0

Contoh: Validasi Input #include <stdio.h> #define MAXLEN 256 int main() { int page, row, col; char dummy[MAXLEN]; printf("Masukan 3 angka integer "); while (scanf("%d %d %d", &page, &row, &col) != 3 ) printf( "Tidak berhenti sebelum ada 3 angka integer \n"); fgets(dummy, MAXLEN, stdin); } printf(“Bilangannya: %d %d %d\n", page, row, col); return 0; Dlm contoh ini, fgets() di pakai utk menghapus/"flush" input yang jelek dr buffer stdin testscanf2.c

Kesimpulan Sequential File handling EOF/Error Checking "C vocabulary“ baru: FILE * fopen(), fscanf(), fprint(), fclose() exit() rewind() fgets()