Page language

Rabu, 04 April 2012

Operasi File

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

   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

language

EnglishFrenchGermanSpainItalianDutchRussianPortugueseJapaneseKoreanArabicChinese Simplified