· 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.
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
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