:: OPERASI FILE ::
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
0 komentar:
Posting Komentar