Anda di halaman 1dari 34

Pertemuan ke 14: File(Berkas)

Algoritme dan Pemrograman


Informatika UPN Veteran Jakarta

@Vini Indriasari, ST, M.Sc., Ph.D


Outline
1. Stream dan File
2. Input/Output File
1

STREAM DAN FILE


Pendahuluan
• Variabel
– Hanya menyimpan data untuk sementara.
– Data akan hilang ketika program dihentikan.
• File
– Menyimpan data untuk jangka panjang.
– Disimpan pada suatu storage device:
• Hard disk
• Solid state drive
• Flash drive
• DVD
Definisi File
• Definisi file
– File adalah kumpulan record.
– Record adalah kumpulan field.
– Field adalah kumpulan byte (kode ASCII
dari setiap karakter).
– Byte adalah kumpulan bit (1 byte = 8 bit).
Definisi File
1 2 3
123456789012345678901234567890123456789
42090012 Andi Hasten 3.45 1 record

53090015 Benita Clarissa 3.82 1 record

67090018 Charuddin Umarjaya 3.27 1 record

field field field


nim nama ipk

Byte ‘U’ = 85 Bit 85 = 01010101


Stream dan File
• C memandang suatu file sebagai a
sequential stream of byte.
– Stream adalah kumpulan karakter yang
berpindah dari satu media ke media lain
pada sistem komputer.
• Dari keyboard ke CPU
• Dari CPU ke layar monitor
• Dari CPU ke file di hard disk
Stream dan File
• Tiga stream diaktifkan ketika suatu
program dijalankan:
– standard input (stdin): menerima masukan
data dari keyboard.
– standard output (stdout): menampilkan
luaran data ke layar monitor.
– standard error (stderr): menampilkan
pesan kesalahan ke layar monitor.
Stream dan File
• Stream dan File
– Ketika suatu file dibuka, terdapat stream
yang diasosiasikan ke file tersebut.
– Stream membuka komunikasi antara file
dan program.
– Ketika fungsi untuk membuka file
dipanggil, fungsi tsb akan mengembalikan
pointer ke struktur data bertipe FILE, yang
sudah didefinisikan dalam library <stdio.h>
Struktur Data File
Struktur data FILE pada compiler GCC (GNU
Compiler Collection), yang digunakan MinGW.
typedef struct _iobuf {
char* _ptr;
int _cnt; Deklarasi file:
char* _base;
 int _flag;  FILE *filepointer
GCC int _file;
int _charbuf;
int _bufsiz;
char* _tmpfname;
} FILE;
Struktur Data File
Strutur data FILE pada compiler Turbo C++
typedef struct {
int level;
unsigned flags;
char fd;
unsigned char hold;
 int bsize;
TC++ unsigned char *buffer;
unsigned char *curp;
unsigned istemp;
short token;
} FILE;
Tipe File
• Text file
– File .txt biasa yang dapat ditulis dan dibaca
dengan menggunakan editor teks.
– Isi file ditulis dalam “plain text” yang
mudah diedit.
• Binary file
– File .bin yang tidak dapat dibaca dengan
mudah, lebih aman dari text file.
– Disimpan dalam bentuk biner (0 dan 1).
2

INPUT/OUTPUT FILE
Membaca File
• Memproses file
– Nama file pada program (logical name)
harus diasosiasikan dengan nama file pada
komputer (physical name).
– Sebelum dapat dibaca, file harus dibuka
dengan fungsi fopen().
– Setelah selesai digunakan, file harus
ditutup dengan fungsi fclose().
Membuka File
• Fungsi fopen()
FILE *fopen( const char *filename,
const char *mode );
– Mengembalikan pointer ke awal buffer
area.
– Mengambalikan nilai NULL jika file tidak
dapat dibuka.
Mode Open File
Mode Kegunaan
“r” Buka file yang telah ada untuk dibaca
“w” Buka file baru untuk ditulis. Jika file sudah ada,
hapus isinya.
“a” Buka file untuk ditambah data di akhir file
“r+” Buka file yang telah ada untuk dibaca dan ditulis
“w+” Buka file baru untuk untuk dibaca dan ditulis
“a+” Buka file untuk dibaca dan diedit; semua
penambahan data akan dilakukan di akhir file

Untuk mode biner: rb, wb, ab, rb+, wb+, ab+


Menutup File
• Fungsi fclose():
int fclose( FILE *stream );
– Mengembalikan nilai 0 jika sukses, dan
EOF jika error. Nilai EOF adalah -1.
– Membebaskan buffer agar dapat
digunakan oleh file lain dan mengirim data
yang masih tertinggal di buffer agar segera
dikirim ke file.
Mengecek Akhir File
• Fungsi feof()
int feof( FILE *stream );
– Untuk menguji apakah posisi pointer
sudah di End-Of-File (EOF).
– Mengembalikan 0 jika belum EOF.
Fungsi fgetc() dan fputc()
• Fungsi fgetc()
int fgetc(FILE *stream);
– Membaca satu karakter dari file
– fgetc(stdin) sama dengan getchar()
• Fungsi fputc()
int fputc(int c, FILE *stream);
– Menulis satu karakter ke file
– fputc('a', stdout) sama dengan putchar('a')
Fungsi fgetc() dan fputc()
Contoh 1: Menuliskan ke file menggunakan fputc()
#include <stdio.h>
int main(){
char *p; FILE *f;
char txt[] = "Dasar Pemrograman";
f = fopen("data.txt", "w");

for (p = txt; *p != '\0'; p++)


fputc(*p, f);

fclose(f);
return 0;
}
Fungsi fgetc() dan fputc()
Contoh 2: Membaca isi file menggunakan fgetc()
#include <stdio.h>
int main(){
char ch; FILE *f;
f = fopen("data.txt", "r");
if(f == NULL)
printf("File tidak bisa dibuka\n");
else
while(!feof(f)) {
ch = fgetc(f); printf("%c",ch);
}
printf("\n");
fclose(f); Dasar Pemrograman
return 0;
}
Fungsi fgets() dan fputs()
• Fungsi fgets()
int *fgets(char *string, int n, FILE *stream);
– Membaca satu baris dari file hingga
newline, atau maximum n-1 karakter.
• Fungsi fputs()
int fputs(const char *string, FILE *stream);
– Menulis satu baris ke file.
Fungsi fgets() dan fputs()
Contoh 3: Menuliskan ke file menggunakan fputs()
#include <stdio.h>
int main(){
FILE *f;
char s[100] = "UPN Veteran Jakarta";
f = fopen("univ.txt", "w");
if (f == NULL)
printf("File tidak bisa dibuat\n");
else {
fputs(s, f);
}
fclose(f);
return 0;
}
Fungsi fgets() dan fputs()
Contoh 4: Membaca isi file menggunakan fgets()
#include <stdio.h>
UPN Veteran Jakarta
int main() {
char s[100]; FILE *f;
f = fopen("univ.txt" , "r");
if (f == NULL)
printf("File tidak bisa dibaca\n");
else
while (!feof(f)) {
fgets(s, sizeof(s), f);
printf("%s", s);
}
fclose(f);
return 0;
}
Fungsi fscanf() dan fprintf()
• Fungsi fscanf()
int fscanf( FILE *stream,
const char *format [, argument ]... );
– Membaca data dari file dengan format sesuai
scanf().
• Fungsi fprintf()
int fprintf( FILE *stream,
const char *format [, argument ]...);
– Menulis data ke file dengan format sesuai
printf().
Fungsi fscanf() dan fprintf()
Contoh 5: Menuliskan ke file menggunakan fprintf()
#include <stdio.h>
int main() {
FILE *f;
char nim[] = "13618020";
int uts=80, uas=90;
f = fopen("nilai.txt", "w");
if (f == NULL)
printf("File tidak bisa dibuka\n");
else
fprintf(f, "%s %d %d\n", nim, uts, uas);
fclose(f);
return 0;
}
Fungsi fscanf() dan fprintf()
Contoh 6: Membaca isi file menggunakan fscanf()
#include <stdio.h>
int main() { 13618020 80 90
FILE *f; char nim[10];
int uts, uas;
f = fopen("nilai.txt" , "r");
if (f == NULL)
printf("File tidak bisa dibaca\n");
else {
while (!feof(f))
fscanf(f, "%s %d %d", nim, &uts, &uas);
printf("%s %d %d\n", nim, uts, uas);}
fclose(f);
return 0;
}
Fungsi fwrite() dan fread()
• Fungsi fwrite()
size_t fwrite( const void *buffer, size_t size, size_t
count, FILE *stream );
– Menulis satu block data yang ada di buffer ke
file.
• Fungsi fread()
size_t fread( void *buffer, size_t size, size_t count,
FILE *stream );
– Membaca satu block data sebesar size dari
file.
Fungsi fwrite() dan fread()
• Fungsi fwrite() dan fread()
– Dapat membaca array data dari file, dan
menulis array data ke file.
– Argumen ke-3 (count) menunjukkan jumlah
elemen array yang ingin dibaca / ditulis ke file.
Fungsi fwrite() dan fread()
Contoh 7: Menuliskan ke file menggunakan fwrite()

#include <stdio.h>
int main(){
FILE *f;
int A[] = {1,2,3,4,5};
f = fopen("binary_file.txt", "w");
if(f == NULL)
printf("File tidak bisa dibuat\n");
else
fwrite(A, sizeof(A), 1, f);
fclose(f);
return 0;
Bukan plain text, tidak bisa
}
dibaca dengan mudah
Fungsi fwrite() dan fread()
Contoh 8: Membaca isi file menggunakan fread()
#include <stdio.h>
1 2 3 4 5
int main(){
FILE *f; int A[5], i;
f = fopen("binary_file.txt", "r");
if(f == NULL)
printf("File tidak bisa dibuka\n");
else{
fread(A, sizeof(A), 1, f);
for(i=0; i<5; i++) printf("%d ", A[i]);
}
fclose(f);
return 0;
}
Menyimpan Data ke File
Contoh 9: Menyimpan data dari keyboard ke file

#include <stdio.h> 3
int main(){ 1 5
FILE *f; 2 6
int n, a, b, i; 3 7
scanf("%d", &n); // jumlah data
f = fopen("input.txt" ,"w");
for(i=0; i<n; i++){
scanf("%d %d", &a, &b);
fprintf(f, "%d %d", a, b);
if(i+1<n) fprintf(f, "\n");
}
return 0;
}
Latihan 1

Ubahlah program contoh 5 sehingga ditampilkan


isi data berupa nim dan nilai rata-ratanya.
Gunakan tipe data struct untuk menyimpan data
nim, uts, uas, dan rataan.
Latihan 2
Pada contoh 9 dilakukan Lengkapi program tersebut
pembacaan n buah sehingga program dapat
pasangan bilangan bulat menentukan bilangan
yang disimpan pada file terbesar dari setiap
“input.txt”. pasangan bilangan, dan
Contoh data input: hasilnya disimpan pada file
“output.txt” seperti berikut:
3
12 2 lebih besar dari 1
43 4 lebih besar dari 3
57 7 lebih besar dari 5

Anda mungkin juga menyukai