Senin, 17 Desember 2012

operasi input/output file

operasi input/output file

File adalah sebuah oraganisasi dari sejumlah record. Masing – masing record bisa terdiri dari satu atau beberapa field. Field terdiri dari satu atau beberapa byte. Dalam bahasa C membedakan operasi input/output file di disk dalam bentuk buffer ataupun file-file berpenyangga (buffered files) maupun file-file yang tidak berpenyangga (unbuffered files). Pengaksesan file pada C menggunakan konsep stream. Stream merupakan penghubung antara programmer dengan file. Sebuah stream terhubung dengan file melaluioperasi open dan terputus dari file melalui operasi close.
Ada dua tipe stream yaitu TEXT (untuk tipe data karakter) dan BINER (untuk sembarang tipe data). Suatu file di disk dapat dibuka dengan fungsi pustaka fopen(). FILE *fopen(char *nama_file, char*mode). 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.
Dasar – dasar operasi file yang harus dipelajari dalam bahasa C diantaranya :

fopen()
merupakan salah satu operasi file yang berfungsi untuk mengkaktifkan sebuah file. hal ini dailakukan agar file tersebut dapat diakses.
Contoh : FILE *fopen(char *namafile, char *mode);
fclose()
merupakan salah satu operasi file yang berfungdi untuk menutup suatu file, hal ini dilakukan karena adanya keterbatasan jumlah file yang dapat diakses secara serentak. file yang tidk lagi digunakan sebaiknya ditutup.
Contoh : int fclose(FILE *pf);
fscanf()
merupakan suatu operasi file yang berguna untuk membaca kembali sebuah data bilangan yang telah disimpa dalam sebuah file dengan keadaan diformat.
Contoh : fscanf(ptr_file, “string kontrol”, daftar argumen);
fprintf()
berfungsi untuk menimpan seubuah data bilangan dalam sebuah file dalam keadaan diformat.
Contoh : fprintf(ptr_file, “string kontrol”, daftar argumen);
fgets()
merupakan suatu operasi file yang berfungsi untuk membaca string dari file sampai ditemukannya baris baru (‘\n’) atau setelah n-1 krakter, dengan n adalah panjang maksimal string yang dibaca perwaktu-baca.
Contoh : char *fgets(char *str, int n, FILE *ptr_file);
fputs()
merupakan salah satu operasi file yang berfungsi untuk menyimpan data bertipe string kedalam file.
Contoh : int fputs(char *str, FILE *ptr_file);
fgetc()
meupakan suatu operasi file yang berfungsi untuk membaca suatu karakter dari sebuah file.
fputc()
merupakan operasi file yang berguna untuk menyimpan sebuah karakter kedalam file.
fread()
merupakan suatu fungsi yang memungkinkan untuk membaca data file dalam bentuk kesatuan blok ( sejumlah byte ), misalnya untuk membaca sebuah data bertipe float.
Contoh : int fread(void *buffer, int n, FILE *ptr_file);
fwrite()
merupakan suatu fungsi yang memungkinkan untuk menyimpan data file dalam bentuk kesatuan blok ( sejumlah byte ), misalnya untuk menyimpan sebuah data bertipe float.
Contoh : int fwrite(void *buffer, int jum_byte, int n, FILE *ptr_file);
fseek()
merupakan suatu operasi file yang berfungsi untuk menempatkan penunjuk file kesuatu lokasi dalam file berdasarkan ofset dan posisi. Dapat juga digunakan untuk membaca data secara acak dan memungkinkan juga untuk melakukan pengubahan data secara acak.
Contoh : int fseek(FILE *ptr_file, long int ofset, int posisi);
feof()
merupkan suatu operasi file yang berfungsi untuk mendeteksi akhir dari suatu file. Keliuaran feof() berupa nilai null (“”) jika operasi pembacaan yang terakhir (misalnya getw()) membaca tanda akhir file.
Contoh : int feof(FILE *ptr_file);
Secara garis besar operasi file dilakukan melalui 3 tahapan :
  1. Membuka atau mengaktifkan file
  2. Melaksanakan proses file
  3. Menutup proses file
Mode yang digunakan untuk pengaksesan file adalah :
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 / rb+ : Membuka sebuah file binary untuk pembacaan/penulisan
w+b / wb+ : Membuat sebuah file binary untuk pembacaan/penulisan
a+b / 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

Tidak ada komentar:

Posting Komentar