OPERASI FILE

34
OPERASI FILE

description

OPERASI FILE. Struktur File. - PowerPoint PPT Presentation

Transcript of OPERASI FILE

Page 1: OPERASI  FILE

OPERASI FILE

Page 2: OPERASI  FILE

Struktur File

File atau berkas merupakan sekumpulan data yang disimpan dalam eksternal memori. File terdiri dari sejumlah record, sedangkan record terdiri dari sejumlah field dan field terdiri dari sejumlah byte (8 bit). Sehingga struktur file dapat digambarkan sbb.:

File

Record Record●●●

Field Field Field

Byte Byte Byte

Page 3: OPERASI  FILE

Tahapan Operasi File

Tiga tahapan operasi file:1. Membuka file2. Melakukan proses membaca, menulis,

menghapus, merubah data dari file3. Menutup file

Page 4: OPERASI  FILE

Membuka File

• Fungsi yang digunakan adalah: fopen() yang berada dalam file header stdio.h

• Deklarasi fungsi fopen():FILE *fopen(char *namafile, char *mode);

Dimana: Namafile adalah nama-file (identifier) yang akan dibuka Mode adalah jenis operasi yang dapat dilakukan thd file

Page 5: OPERASI  FILE

Mode Operasi File

Jenis (mode) operasi fileMODE KETERANGAN

r File hanya dapat dibaca, file harus sudah ada.

w File baru dibuat, operasi selanjutnya untuk perekaman data. Bila file sudah ada maka data yang lama dihapus.

a Membuka file yang sudah ada, operasi selanjutnya penambahan data. Bila file belum ada, maka akan diciptakan terlebih dahulu.

r+ Membuka file yang sudah ada, operasi dapat dilakukan untuk pembacaan dan penulisan

w+ Membuka file untuk penulisan dan pembacaan. Bila file sudah ada, maka isinya akan dihapus.

a+ Membuka file untuk penulisan dan pembacaan. Bila file sudah ada, maka isinya tidak dihapus.

Page 6: OPERASI  FILE

Contoh Membuka File

FILE *pf; //deklarasi variabel FILE pf

pf = fopen(“data.txt”, “w”); //membuat & membuka file “data.txt” //dg mode “w” & pointer FILE ke pf.

• Bila file “data.txt” sudah ada, maka data sebelumnya dihapus.• Bila tidak berhasil membuat FILE “data.txt”, maka pf bernilai

NULL.• Sehingga umumnya digunakan sbb.:

if (pf=fopen(“data.txt”,”w”) == NULL) { puts(“File gagal dibuat.”); exit(1); //keluar program}

Page 7: OPERASI  FILE

Menutup File

• Fungsi yg dipakai fclose(), dg definisi fungsi sbb.:int fclose(FILE *pf);

• Prototipe fungsi berada di file header stdio.h• Jika berhasil menghasilkan nilai 0 (nol).• Untuk menutup semua file dapat digunakan:

int fcloseall(void);• Menghasilkan nilai EOF (-1) bila gagal.• Menghasilkan jumlah file yg ditutup bila berhasil.

Page 8: OPERASI  FILE

Menulis data File per Karakter• Fungsi yang digunakan fputc(), terdapat dalam file header

stdio.h.• Bentuk deklarasi fungsi:

int fputc(int kar, FILE *ptr_file);• Bila berhasil, nilai pengembalian fungsi sama dengan kar. Bila

tidak berhasil, nilai pengembalian fungsi berupa EOF (-1).

Page 9: OPERASI  FILE

Contoh Menyimpan data per karakter ke File

#include<stdio.h>#include<conio.h>#include<stdlib.h>#define CTL_Z 26

int main(){ FILE *pf; char kar; if((pf=fopen("data.txt","w"))==NULL){ puts("Gagal membuka file.....!!!!\n"); exit(1); } while ((kar=getche()) != CTL_Z) putc(kar,pf); fclose(pf); getch(); return (0);}

Page 10: OPERASI  FILE

Membaca data File per Karakter• Fungsi yang digunakan getc(), terdapat dalam file header

stdio.h.• Bentuk deklarasi fungsi:

int getc(FILE *ptr_file);• Bila berhasil, nilai pengembalian fungsi berupa nilai int dari

sebuah karakter yg dibaca dari file. Bila tidak berhasil, nilai pengembalian fungsi berupa EOF (-1).

Page 11: OPERASI  FILE

Contoh Membaca data per karakter dari File

#include<stdio.h>#include<conio.h>#include<stdlib.h>

int main(){ FILE *pf; char kar; if((pf=fopen("data.txt",“r"))==NULL){ puts("Gagal membuka file.....!!!!\n"); exit(1); } while ((kar=getc(pf)) != EOF) putch(kar); fclose(pf); getch(); return (0);}

Page 12: OPERASI  FILE

Dalam Bahasa Pemrograman C, terdapat 2 macam jenis file, yaitu:

1. File Biner: merupakan penyimpanan data di dalam eksternal memori (disk) berbentuk serangkaian kode biner, seperti bentuk penyimpanan di RAM. Dipakai untuk menyimpan data kompleks, mis: struct.

2. File Teks: merupakan penyimpanan data di dalam eksternal memori (disk) berbentuk serangkaian karakter. Dipakai untuk menyimpan data seperti karakter atau string.

Jenis File

Page 13: OPERASI  FILE

Penentuan file mode teks dan mode biner ditandai dengan penggunaan simbol:

t untuk mode teks b untuk mode biner

Contoh :"rt" : mode file adalah teks dan file hendak dibaca"rt+” : mode file adalah teks dan file bisa dibaca dan ditulisi.

Bisa juga ditulis : "r+t""rb" : mode file adalah biner dan file hendak dibaca.

Jenis File

Page 14: OPERASI  FILE

Penentuan file mode teks dan mode biner dapat dilakukan melalui variabel global _fmode, yg terdapat pada file header fcntl.h

Variabel _fmode dapat diisi O_BINARY untuk file biner, atau O_TEXT untuk file teks.

Contoh:

_fmode = O_BINER;pf = fopen(“datafile.dat”,”r”);

Jenis File

Page 15: OPERASI  FILE

OPERASI BACA & TULIS FILE PER INT

• Perintah yang digunakan : _putw (), _getw().• Bentuk deklarasi :

Kegunaan : _getw() untuk membaca sebuah data bertipe int dari

file_putw() untuk menyimpan sebuah data bertipe int ke

file.

int _putw(int nilai, FILE *ptr_file);int _getw(FILE *ptr_file);

Page 16: OPERASI  FILE

Contoh Program Tulis per int#include <stdio.h>#include <stdlib.h>Int main( ){ FILE *pf; /* ptr-ke-FILE */

int nilai, data, i;char jawab;if((pf=fopen("BILANGAN.DAT", "wb")) == NULL ) { printf("file gagal diciptakan!\n"); exit(1);}printf ("Masukkan banyaknya data : ");scanf ("%d",&data);for (i=0;i<data;i++) {

printf("\nBilangan yang disimpan: ");scanf("%d", &nilai); /* baca nilai dr keyboard */_putw(nilai, pf); /* baca bilangan ke file */

}printf("\nOke. Data sudah disimpan dalam file.\n");fclose(pf); /* menutup file */

}

Masukkan banyaknya data : 3

Bilangan yang disimpan : 70

Bilangan yang disimpan : 80

Bilangan yang disimpan : 90

Page 17: OPERASI  FILE

Contoh Program Baca per int

#include <stdio.h>#include <stdlib.h>int main(){ FILE *pf; /* ptr ke file */

int nilai, nomor = 0;/* Buka file biner untuk dibaca */if((pf=fopen("BILANGAN.DAT","rb")) == NULL){ printf("File gagal dibuka.\n"); exit(1);}printf("Isi file BILANGAN.DAT : \n");while(1) { /* file berhasil dibuka */ nilai = _getw(pf); /* Baca sebuah int dr file */ if (feof(pf) != 0) break; /*Jika akhir file, keluar loop*/ printf("%2d. %d \n", ++nomor, nilai); /* Tampilkan ke layar */}fclose(pf); /* Tutup file */

return(0);}

Isi file BILANGAN.DAT :

1. 70

2. 80

3. 90

Page 18: OPERASI  FILE

OPERASI BACA & TULIS FILE PER BLOK

• Fungsi : untuk menyimpan atau membaca data file dalam bentuk kesatuan blok (sejumlah byte), misal float atau struct.

• Perintah yang digunakan : fread () dan fwrite ();• Bentuk deklarasi :

Dimana: buffer : pointer yang menunjuk ke alamat memori di RAM (sbg variabel) jum_byte : jumlah byte yang akan dibaca atau disimpan n : byknya blok data berukuran jum_byte yg akan ditulis / dibaca

ptr_file : pointer-ke-FILE yang berisi nilai keluaran dari fopen().

int fread(void *buffer, int jum_byte, int n, FILE *ptr_file);int fwrite(void *buffer, int jum_byte, int n, FILE *ptr_file);

Page 19: OPERASI  FILE

Contoh Program Tulis Struktur

#include <stdio.h>#include <stdlib.h>

Int main(){ FILE *f_struktur; char jawaban; int sudah_benar; struct { char judul[20];

char pengarang[20]; int jumlah;

} buku; /* variabel buku bertipe struktur */ if((f_struktur = fopen("DAFBUKU.DAT", "wb")) == NULL) { printf("File tidak dapat diciptakan !\n"); exit(1); }

Page 20: OPERASI  FILE

do { fflush(stdin); /* Hapus isi penampung keyboard */printf("Judul buku : ");gets(buku.judul);printf("Nama pengarang : ");gets(buku.pengarang);printf("Jumlah buku : ");scanf("%d", &buku.jumlah);fflush(stdin); /* Hapus isi penampung keyboard *//* Rekam sebuah data bertipe struktur */fwrite(&buku, sizeof(buku), 1, f_struktur);printf("\nMau merekam data lagi [Y/T] ?");jawaban = getchar();printf("\n");

} while(jawaban == 'Y' || jawaban == 'y');fclose(f_struktur); /* Tutup file */return(0);

}

Contoh Program Tulis StrukturLanjutan

Page 21: OPERASI  FILE

Contoh Program Baca Struktur

#include <stdio.h>#include <stdlib.h>

int main(){ FILE *f_struktur; int i=1; struct { char judul[20];

char pengarang[20]; int jumlah;

} buku; /* variabel buku bertipe struktur */ if((f_struktur = fopen("DAFBUKU.DAT", "rb")) == NULL)

{ printf("File tidak dapat dibuka !\n"); exit(1);}

printf("%2s. %-30s %-30s %s\n\n", "No", "Judul Buku", "Nama Pengarang", "Jumlah"); /* diulang selama masih ada record yg terbaca dlm file */ while(fread(&buku, sizeof(buku), 1, f_struktur) == 1) printf("%2d. %-30s %-30s %4d\n", i++, buku.judul, buku.pengarang, buku.jumlah); printf("\n"); fclose(f_struktur); /* Tutup file */ return(0);}

Ukuran char-nya harus sama dengan yang di program tulis

Page 22: OPERASI  FILE

OPERASI BACA & SIMPAN DATA STRING PADA FILE

• Perintah yang digunakan : fgets() dan fputs(). • Bentuk deklarasi :

Kegunaan :fputs() : menyimpan string str ke dalam file.fgets() : membaca string dari file sampai ditemukannya karakter baris

baru '\n' atau setelah (n-1) karakter, dengan n adalah panjang maksimal string yang dibaca per waktu-baca.

int fputs(char *str, FILE *ptr_file);char fgets(char *str, int n, FILE *ptr_file);

Note : Saat simpan, fputs() tidak menambahkan karakter baris-baru ('\n')

dengan sendirinya, dan karakter null tidak ikut disimpan. Baik fgets() maupun fputs() digunakan untuk file teks.

Page 23: OPERASI  FILE

Contoh Program Tulis-1#include <stdio.h>#include <stdlib.h>int main( ){ FILE *pf; /* ptr-ke-FILE */ int data, i; char nama[40]; if((pf=fopen("latihan.txt", "w")) == NULL ) { printf("file gagal diciptakan!\n"); exit(1); } printf ("Masukkan banyaknya data : "); scanf ("%d",&data); for (i=1;i<=data;i++) {

printf("\nNama ke %d : ",i); fflush(stdin);gets(nama);strcat(nama,”\n”);fputs(nama, pf);

} printf("\nOke. Data sudah disimpan dalam file.\n"); fclose(pf); /* menutup file */ return(0);}

Page 24: OPERASI  FILE

#include <stdio.h>#include <stdlib.h>int main( ){ FILE *pf; /* ptr-ke-FILE */ int data, i; char nama[40]; if((pf=fopen("latihan.txt", "w")) == NULL )

{ printf("file gagal diciptakan!\n"); exit(1);}

printf("\nNama ke %d : ",i); fflush(stdin); gets(nama); fputs(nama, pf); printf("\nOke. Data sudah disimpan dalam file.\n"); fclose(pf); /* menutup file */ return(0);}

Contoh Program Tulis-2

Page 25: OPERASI  FILE

Contoh Program Baca#include <stdio.h>#include <stdlib.h>

int main( ){ FILE *pf; /* ptr-ke-FILE */ int data, i; char nama[40]; if((pf=fopen("latihan.txt", "r")) == NULL )

{ printf("file gagal dibuka!\n"); exit(1);}

/*Baca file per string (6 char) sampai ditemui EOF*/ while (fgets(nama,6,pf)) printf ("%s\n",nama); fclose(pf); /* menutup file */ return(0);}

Page 26: OPERASI  FILE

Akses File Biner secara Acak• Tujuan: membaca data di tengah file secara cepat.• Fungsi yang digunakan : fseek ().• Bentuk deklarasi :

dengan :ptr_file adalah pointer yang berasal dari keluaran

fopen()offset menyatakan jumlah byte terhadap posisiposisi dapat diisi suatu nilai yang tertera pada tabel

int fseek(FILE *ptr_file, long int offset, int posisi);

Prototype : stdio.h

Page 27: OPERASI  FILE

Contoh Aplikasi fseek () fseek(pf, 3, SEEK_SET);

fseek(pf, 3, SEEK_END);

fseek(pf, 3, SEEK_CURR);

Page 28: OPERASI  FILE

Contoh Program fseek()Untuk Mencari Karakter

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ FILE *pf; char kar,jawab; int i, no_record; long int offset_byte; if((pf = fopen("latihan.txt", "r")) == NULL) {

printf("File tidak dapat dibuka !\n"); exit(1);

} do { printf(“\n Nomor record dr data yg mau ditampilkan : ");

scanf("%d", &no_record); offset_byte = (no_record-1); fseek(pf, offset_byte, SEEK_SET); kar=fgetc(pf); /* baca kar dari file */ putchar(kar); /* tampilkan ke layar*/ printf("\nMau mencoba lagi (Y/T)? "); jawab=getche();

} while (jawab == 'y' || jawab == 'Y'); printf("\n"); fclose(pf); /* Tutup file */ return(0);}

Page 29: OPERASI  FILE

Contoh Program fseek() Untuk Mencari Bilangan

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ FILE *pf; char jawab; int i, no_record,nilai; long int offset_byte; if((pf = fopen("bilangan.dat", "rb")) == NULL) {

printf("File tidak dapat dibuka !\n");exit(1);

} do { printf(“\nNomor record dr data yg mau ditampilkan : ");

scanf("%d", &no_record);offset_byte = (no_record-1)*sizeof (int);fseek(pf, offset_byte, SEEK_SET);nilai = _getw(pf); /* Baca sebuah int dr file */printf("%d \n",nilai);printf("\nMau mencoba lagi (Y/T)? ");jawab=getche();

} while (jawab == 'y' || jawab == 'Y'); printf("\n"); fclose(pf); /* Tutup file */ return(0);}

Page 30: OPERASI  FILE

Contoh Program fseek() untuk Mencari String

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ FILE *pf; char jawab,nama[20]; int i, no_record; long int offset_byte; if((pf = fopen("latihan.txt", "r")) == NULL) {

printf("File tidak dapat dibuka !\n");exit(1);

} do { printf("\n Nomor record dr data yg mau ditampilkan : ");

scanf("%d", &no_record);offset_byte = (no_record-1);fseek(pf, offset_byte, SEEK_SET);printf ("%s\n",fgets(nama,20,pf));printf("\nMau mencoba lagi (Y/T)? ");jawab=getche();

} while (jawab == 'y' || jawab == 'Y'); printf("\n"); fclose(pf); /* Tutup file */ return (0);}

Page 31: OPERASI  FILE

MENGHAPUS FILE• Bentuk deklarasi:

namafile: pointer yang menunjuk nama file yang dihapus

• Jika operasi hapus berhasil, akan menghasilkan output = 0.• Prototype : stdio.h

int remove (char *namafile);

Page 32: OPERASI  FILE

Contoh Menghapus File#include <stdio.h>#include <stdlib.h>#define PJG 65

int main(){ int kode;

char namafile[PJG];printf("Nama file yang akan dihapus: ");gets(namafile);kode = remove(namafile);if(kode == 0) printf("File berhasil dihapus\n");else printf("Gagal menghapus file\n");

return(0);}

Page 33: OPERASI  FILE

MENGGANTI NAMA FILE• Bentuk deklarasi:

• Jika operasi hapus berhasil, akan menghasilkan output = 0.• Prototype : stdio.h

int rename(char *namafilelama, char *namafilebaru);

Page 34: OPERASI  FILE

Contoh Program Ganti Nama File

#include <stdio.h>#include <stdlib.h>#define PJG 65int main(){ int kode;

char namafilelama[PJG], namafilebaru[PJG];printf("Nama file yang akan diganti: ");gets(namafilelama);printf("Nama file yang baru: ");gets(namafilebaru);kode = rename(namafilelama, namafilebaru);if(kode == 0) printf("Nama file sudah berhasil diganti\n");else printf("Gagal mengganti nama file\n");

return (0);}