0
Operasi File
Posted by jujur
on
4:07 PM
v
KONSEP
DASAR
·
Bahasa
C mendukung penyimpanan dan pembacaan data dari sebuah file.
·
File: sembarang sumber untuk
penyimpanan/pembacaan data, mencakup keyboard, layar/monitor, printer, file
pada disk, dsb.
·
Pengaksesan
file pada C menggunakan konsep stream.
Stream merupakan penghubung antara
programmer dengan file.
·
Sebuah
stream terhubung dengan file melalui
operasi open dan terputus dari file
melalui operasi close.
·
Ada dua tipe stream: text (untuk tipe
data karakter) dan biner (untuk
sembarang tipe data).
v PERINTAH
MEMBUKA FILE DAN MENGHUBUNGKANNYA DENGAN STREAM dengan fopen
(library stdio.h) DAN MENUTUPNYA DENGAN 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
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
|
·
Jika
operasi open berhasil, fopen() mengembalikan sebuah file
pointer yang
valid.
·
Jika
operasi gagal, maka fopen()mengembalikan sebuah null
pointer, sehingga harus selalu dicek pada saat pembukaan file. Contoh:
FILE *fp;
if((fp=fopen(“fileku.txt”,”r”)==NULL)
{
printf(“Error
dalam pembukaan file\n”);
exit(1);
}
fclose(fp); //menutup stream file
v FUNGSI
UNTUK OPERASI FILE TEKS
·
fgetc() dan fputc()
Sintaks:
int fgetc(FILE *fp);
int fputc(int ch, FILE *fp);
Contoh:
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *fp;
int i;
int ch;
fp = fopen("foo.abc",
"w");//buka file foo.abc untuk ditulisi
for (i=0;i<10;i++)
{ //loop untuk meletakkan karakter2
fputc('A',fp); //menuliskan karakter A
fputc('\n',fp); //menuliskan pergantian baris
}
fclose(fp);
if((fp =
fopen("foo.abc", "r"))==NULL) {
printf("Error
reading file...\n");
exit(1);
}
while (ch!=EOF) { //baca file sampai tanda EOF (End of File) ch=fgetc(fp); //ambil satu karakter
putchar(ch); //menampilkan karakter ke layar
}
fclose(fp);
}
·
fgets() dan
fputs()
Sintaks:
int fputs(char *str, FILE *fp);
char *fgets(char *str, int num, FILE *fp);
Contoh:
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *fp;
char ch[14];
fp =
fopen("foo.abc", "w");//buka file foo.abc untuk ditulisi
fputs("String Contoh",fp);//menuliskan
string
fclose(fp);
if((fp =
fopen("foo.abc", "r"))==NULL) {
printf("Error
reading file...\n");
exit(1);
}
puts(fgets(ch,sizeof(ch),fp));//cetak
string di foo ke layar
fclose(fp);
}
·
fscanf() dan
fprintf()
§
Mirip
dengan sintaks scanf() dan
printf()
§
Dapat
digunakan untuk sembarang file (tidak hanya monitor/layar)
§
Dapat
menggunakan format data
Sintaks:
int fprintf(FILE *fp, const char *format,
…);
int fscanf(FILE *fp, const char *format,
…);
Contoh:
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *fp;
int i;
char x[100];
fp =
fopen("foo.abc", "w");
//buka file foo.abc untuk ditulisi
fprintf(fp,
"\nSample Code\n\n");
//menuliskan sesuatu
for (i = 1; i <= 10
; i++) {
fprintf(fp,
"i = %d\n", i);
}
fclose(fp);
if((fp=fopen("foo.abc","r"))==NULL)
{
printf("Error
membuka file\n");
exit(1);
}
while(!feof(fp)) {
fscanf(fp,"%s",&x);
puts(x);
}
fclose(fp);
}
·
fread() dan fwrite()
§
Untuk
membaca dan menulis blok data (mis. Karakter, integer, structure, dll)
§
Untuk
dapat menggunakan fwrite(), file harus dibuka dengan tambahan
opsi “b” (binary)
§
Sintaks:
fwrite(void *buffer, int
b_byte, int c, file *fp);
fread(void
*buffer, int b_byte, int c, file *fp);
§
Keterangan:
buffer
: pointer ke area di memori yang menampung data yg akan
dibaca ke file
b_byte :
banyaknya byte data yang akan dibaca/tulis (dapat menggunakan
sizeof(buffer))
c :
banyaknya blok data yang akan dibaca/ditulis
fp : pointer ke file